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

标签 java multithreading executorservice

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

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

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

最佳答案

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

例如:

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

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

关于java - 是否有一个 ExecutorService 为每个任务创建一个新线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44950455/

相关文章:

java - 重写有异常编译器错误的方法

java - 让事件处理程序立即采取行动?

java - PipedInputStream、PipedOutputStream 和进程

java - 下面的任务会捕获异常吗?

java - 用 java.awt.Robot 模拟退格键

java - 使用函数引用时出现奇怪的语法错误

c++ - 应用程序在线程退出时崩溃 - C++

c# - 写入具有多线程性能问题的 log4net FileAppender

java - 如何并行处理文件的行?

java - 在 Runnable 线程中访问 Spring bean