2013-10-29 48 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()来执行器关机。如果您想继续添加任务,请不要关闭它。

我想这是直接关系到处理器?

错误消息中没有任何建议。