【发布时间】:2010-12-28 14:51:52
【问题描述】:
我有这个问题,我有
private ScheduledExecutorService executor =
Executors.newSingleThreadScheduledExecutor();
每 50 毫秒创建一次的任务:
executor.scheduleAtFixedRate(myTask, 0, 50, TimeUnit.MILLISECONDS);
myTask 有时需要一段时间才能完成(比如 2-3 秒左右),但 newSingleThreadScheduledExecutor 保证下一个计划的 myTask 将等到当前的完成。
但是,我有时会收到此错误:
执行:java.util.concurrent.RejectedExecutionException
我该怎么办?谢谢
【问题讨论】:
-
请更具体地说明您所说的“不时”是什么意思。只有在 ExecutorService 上调用
execute()时才应引发该异常。 -
其实 RejectedExecutionException 是 executor.scheduleAtFixedRate() 可以抛出的
-
@Andrey,您需要向我们提供更多信息,从显示异常的堆栈跟踪开始。
-
@Jim,是的,我的意思是“在提交作业的那一刻”,而不是“不时”:)
-
是的,有时当我调用 scheduleAtFixedRate 时会抛出 RejectedExecutionException(不是总是,但我猜当我的 myTask 需要比以往更多的时间来完成时它开始抛出异常)。
标签: java multithreading exception concurrency executor