Executors.newSingleThreadExecutor()的退出策略是什么

a-u*_*a-u 2 java concurrency multithreading executorservice

我是java并发的新手,所以这可能是一个已经回答很久或者太明显的问题,我可能会遗漏一些东西.

我像这样的任务运行:

Executors.newSingleThreadExecutor().执行(任务)

我的问题是当它结束执行任务的run方法时为什么它不退出或为什么线程仍然存活?我的理解是,一旦线程run()完成线程就不再存在了,对吧?

Jon*_*eet 5

newSingleThreadExecutor返回一个ExecutorService使用单个线程的东西 - 它仍然可以执行多个任务.它不会退出,因为您可能想要提供更多任务.

您可以使用:

ExecutorService service = Executors.newSingleThreadExecutor();
service.execute(task);
service.shutdown();
Run Code Online (Sandbox Code Playgroud)

在任务执行后关闭它.