下面是我的方法,我有单线程执行程序来执行run方法中的某个任务。RejectedExecutionException来自单线程执行程序
private void trigger(final Packet packet) {
// this line is throwing exception
Executors.newSingleThreadExecutor().execute(new Runnable() {
@Override
public void run() {
// some code here
}
});
}
下面是我得到的例外,我不知道为什么?解决这个问题的最好方法是什么?
error= java.util.concurrent.RejectedExecutionException: Task [email protected] rejected from [email protected][Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0]
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2048)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:821)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1372)
at java.util.concurrent.Executors$DelegatedExecutorService.execute(Executors.java:628)
如果我的trigger
方法被调用许多次,它仍然是在我以前的线程的run方法的工作,会发生什么?它会启动多个线程,还是等待一个线程完成,然后启动另一个线程?
是的,这是完整的代码,我也提到了它抛出异常的地方。 – user1950349
您使用的是哪个版本的JDK? –
我正在使用JDK7。 – user1950349