我有以下代码:
@RunWith(ParallelSuite.class)
@Suite.SuiteClasses({Test1.class,
Test2.class,
Test3.class,
Test4.class,
Test5.class,
Test6.class,
Test7.class})
public class ParallelRunner {
}
我运行它并发现只有 3 个测试并行运行。这些测试足够长 - 15 秒以上
是操作系统调度程序问题还是 junit 线程池限制?
如何配置线程池限制?
最佳答案
在 ParallelComputer
中,您可以找到以下方法:
private static Runner parallelize(Runner runner) {
if (runner instanceof ParentRunner) {
((ParentRunner)runner).setScheduler(new RunnerScheduler() {
private final ExecutorService fService = Executors.newCachedThreadPool();
public void schedule(Runnable childStatement) {
this.fService.submit(childStatement);
}
public void finished() {
try {
this.fService.shutdown();
this.fService.awaitTermination(9223372036854775807L, TimeUnit.NANOSECONDS);
} catch (InterruptedException var2) {
var2.printStackTrace(System.err);
}
}
});
}
return runner;
}
我们需要替换它:
private final ExecutorService fService = Executors.newCachedThreadPool();
我只是复制粘贴的 ParallelComputer
类代码并将这一行替换为:
private final ExecutorService fService = Executors.newFixedThreadPool(MAX_THREAD_COUNT);
关于java - 如何控制 ParallelSuite 线程数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49005611/