[英]Threads in Cached Thread Pool never being removed
因此,我有一台這樣的服務器:
public class Server {
private ExecutorService executor = null;
private class WorkerThread implements Runnable{
public void run() {
try{
do{
synchronized(executor){
executor.wait();
}
// doSomeThing
}while(true);
} catch (InterruptedException e) {
}
}
}
Server() {
executor = Executors.newCachedThreadPool();
}
public void calledWhenTriggerEventOccurs(){
synchronized(executor) {
executor.execute(new WorkerThread());
executor.notify();}
}
}
連續調用3次callWhenWhenTriggerEventOccurs()之后,將在執行程序池中放置3個新線程。 然后,我只等待90秒。
我現在希望前面的3個線程消失。 但是他們還活着。 當我再次調用namedWhenTriggerEventOccurs()時,正在創建第4個線程。
那么,為什么這3個線程沒有像我期望的那樣被刪除?
您的任務很可能永遠等待,因此無論您等待多長時間,我都不希望它們死掉。 當您notify()時,沒有任何線程等待通知丟失。 在您的三個任務有機會開始之前,您很可能已經通知了三次。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.