是否有一个 ExecutorService 为每个任务创建一个新线程?
Is there an ExecutorService that creates a new thread for every task?
我需要对一些跨线程的功能进行单元测试,为此我需要保证两个作业 运行 在不同的线程上。
使用 Executors.newCachedThreadPool()
引入了竞争条件,因为测试可能会也可能不会使用缓存的线程池。
是否有一个总是使用新线程的 ExecutorService
?
使用 java.util.concurrent.ThreadPoolExecutor
,corePoolSize
为 0
,keepAliveTime
为 0
。这将使新任务产生一个新线程,任务终止后线程将立即被杀死。
例如:
final ExecutorService executorService = new ThreadPoolExecutor(
0, 2, 0, TimeUnit.SECONDS, new SynchronousQueue<>());
executorService.submit(task1);
executorService.submit(task2);
我需要对一些跨线程的功能进行单元测试,为此我需要保证两个作业 运行 在不同的线程上。
使用 Executors.newCachedThreadPool()
引入了竞争条件,因为测试可能会也可能不会使用缓存的线程池。
是否有一个总是使用新线程的 ExecutorService
?
使用 java.util.concurrent.ThreadPoolExecutor
,corePoolSize
为 0
,keepAliveTime
为 0
。这将使新任务产生一个新线程,任务终止后线程将立即被杀死。
例如:
final ExecutorService executorService = new ThreadPoolExecutor(
0, 2, 0, TimeUnit.SECONDS, new SynchronousQueue<>());
executorService.submit(task1);
executorService.submit(task2);