Java 是否存在为每个任务创建新线程的ExecutorService?

Java 是否存在为每个任务创建新线程的ExecutorService?,java,multithreading,executorservice,Java,Multithreading,Executorservice,我需要对一些跨线程工作的功能进行单元测试,为此我需要保证两个作业在不同的线程上运行 使用Executors.newCachedThreadPool()会引入竞争条件,因为测试可能使用也可能不使用缓存的线程池 是否有始终使用新线程的ExecutorService 使用corePoolSize为0且keepAliveTime为0的。这将使新任务产生一个新线程,并且在任务终止后线程将立即被终止 例如: final ExecutorService executorService = new Thread

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

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

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

使用
corePoolSize
0
keepAliveTime
0
的。这将使新任务产生一个新线程,并且在任务终止后线程将立即被终止

例如:

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

executorService.submit(task1);
executorService.submit(task2);
final executor服务executor=new ThreadPoolExecutor(
0,2,0,TimeUnit.SECONDS,新的SynchronousQueue());
executorService.submit(任务1);
executorService.submit(任务2);
Caveat:(IIUC)如果任务排队,那么一旦可用,这些任务将重用现有线程。换句话说:只有在没有其他任务可立即执行的情况下,线程才会在任务完成后终止。