考虑下面的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