下面是我的方法,我有單線程執行程序來執行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