簡體   English   中英

永遠不會刪除緩存線程池中的線程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM