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)如果任务排队,那么一旦可用,这些任务将重用现有线程。换句话说:只有在没有其他任务可立即执行的情况下,线程才会在任务完成后终止。