2013-10-29 50 views
0

我正試圖在java中創建幾個計劃任務。RejectedExecutionException。游泳池大小太小?

然而,當我添加多個任務,他們中的一些崩潰返回此異常:在線程

異常「主要」 java.util.concurrent.RejectedExecutionException:任務java.util.concurrent.ScheduledThreadPoolExecutor中的$ ScheduledFutureTask @從[email protected]拒絕219baf0b [關閉,池大小= 2,活動線程= 0,隊列任務= 4,已完成的任務= 0]

這是我使用的代碼:

final ScheduledExecutorService schExService; 

/** 
* Constructor per defecte de TaskSchedulker. Aquí s'inicaran els atributs i 
* s'instanciaran els objectes necessaris per disposar d'un programador com 
* el descrit totalement funcional. 
*/ 
public TaskScheduler() { 
    schExService = Executors.newScheduledThreadPool(2); 
} 
public void addTask(){ 
    final Runnable ob = new ExecutaFil(tskParams); 
    schExService.schedule(ob, toSeconds(timeToWait), TimeUnit.SECONDS); 
} 

而且我多次觸發addTask方法。

ExecutaFil只是一個實現Runnable的類,其中sleep

任何提示?

我試着改變池值(從2到例如100),它忽略了。池大小從來沒有高於4.我想這是直接關係到處理器?我怎樣才能解決這個問題?

+0

您能提供一個簡短但完整的程序來證明問題嗎? –

回答

4

[email protected]拒絕[關閉,池大小= 2,活動線程= 0,隊列任務= 4,已完成的任務= 0]

這意味着你通過調用shutdown()來執行器關機。如果您想繼續添加任務,請不要關閉它。

我想這是直接關係到處理器?

錯誤消息中沒有任何建議。