Java Executors的退出策略是什么
我是java并发新手,所以这可能是一个已经回答了很多次的问题,或者太明显了,我可能遗漏了一些东西 我以任务的形式运行,如下所示:Java Executors的退出策略是什么,java,multithreading,concurrency,executorservice,Java,Multithreading,Concurrency,Executorservice,我是java并发新手,所以这可能是一个已经回答了很多次的问题,或者太明显了,我可能遗漏了一些东西 我以任务的形式运行,如下所示: Executors.newSingleThreadExecutor().execute(task) 我的问题是,当它执行任务的run方法结束时,为什么它不退出,或者为什么线程仍然处于活动状态?我的理解是,一旦线程run()完成,线程就不再存在,对吗?newSingleThreadExecutor返回一个ExecutorService,它使用一个线程-它仍然可以执行多
Executors.newSingleThreadExecutor().execute(task)
我的问题是,当它执行任务的run方法结束时,为什么它不退出,或者为什么线程仍然处于活动状态?我的理解是,一旦线程
run()
完成,线程就不再存在,对吗?newSingleThreadExecutor
返回一个ExecutorService
,它使用一个线程-它仍然可以执行多个任务。它不会退出,因为您可能希望提供更多任务
您可以使用:
ExecutorService service = Executors.newSingleThreadExecutor();
service.execute(task);
service.shutdown();
在任务执行后将其关闭。线程保持活动状态,因为其生命周期与分配给执行者的任务的生命周期无关;看看:
您会发现,在内部,返回的ExecutorService使用单个线程按顺序运行分配给它的任务,如果您的一个任务杀死了原来的一个,则可能会实例化一个新线程。我看到该任务与线程生命周期是分开的。谢谢,我们将阅读javadoc