考慮下面的Java代碼的Java newSingleThreadExecutor垃圾收集
void doSomething(Runnable r1, Runnable r2){
Executor executor = Executors.newSingleThreadExecutor();
executor.execute(r1);
executor.execute(r2);
}
當我調用DoSomething的方法,執行程序已創建並在其他以後執行任務r1和r2順序之一。
我的問題是:一旦兩個任務r1和r2終止會發生什麼?
我想執行人對象將是垃圾回收,但我不知道是否也將關閉。如果執行程序爲其執行創建新線程,該線程是否會導致資源泄漏?
您可以使用ExecutorService,然後在您提交執行任務後調用shutdown。 ES將在結束之前等待任務完成。 – Jacob
您還可以使用帶有零核心線程的'ThreadPoolExecutor',以便在沒有要運行的任務時回收線程。 – Magnus