我正在尝试在java中创建几个计划任务。
但是,当我添加几个任务时,其中一些任务会崩溃,返回此异常:
线程“main”中的异常java.util.concurrent.RejectedExecutionException:java.util.concurrent.ScheduledThreadPoolExecutor@74010c69中的任务java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask@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)
拒绝来自java.util.concurrent.ScheduledThreadPoolExecutor@74010c69 [关闭,池大小= 2,活动线程= 0,排队任务= 4,已完成任务= 0]
这意味着你通过调用shutdown()来关闭执行程序。如果要继续添加任务,请不要将其关闭。
我猜这与处理器直接相关?
错误消息中没有任何内容表明这一点。