是否有ExecutorService为每个任务创建一个新线程?

时间:2017-07-06 13:32:36

标签: java multithreading executorservice

我需要对跨线程工作的一些功能进行单元测试,为此我需要保证两个作业在不同的线程上运行。

使用Executors.newCachedThreadPool()引入了竞争条件,因为测试可能会也可能不会使用缓存的线程池。

是否有ExecutorService始终使用新线程?

1 个答案:

答案 0 :(得分:6)

使用corePoolSize 0 keepAliveTime0 final ExecutorService executorService = new ThreadPoolExecutor( 0, 2, 0, TimeUnit.SECONDS, new SynchronousQueue<>()); executorService.submit(task1); executorService.submit(task2); 。这将使新任务产生一个新线程,并在任务终止后立即终止线程。

例如:

{{1}}