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

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

使用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);
上一篇:聊聊为啥不推荐使用jdk自带的创建线程池方法


下一篇:线程的建立