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

Is there an ExecutorService that creates a new thread for every task?

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

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

是否有一个总是使用新线程的 ExecutorService

使用 java.util.concurrent.ThreadPoolExecutorcorePoolSize0keepAliveTime0。这将使新任务产生一个新线程,任务终止后线程将立即被杀死。

例如:

final ExecutorService executorService = new ThreadPoolExecutor(
    0, 2, 0, TimeUnit.SECONDS, new SynchronousQueue<>());

executorService.submit(task1);
executorService.submit(task2);