我正在尝试编写一个测试,该测试使用ScheduledExecutorService
将请求发送到testng中的模拟下游服务,但是该测试会立即返回,而无需实际等待ScheduledExecutorService
运行任何后台作业。
@Test
public void test() {
int theadNum = 32;
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(theadNum);
Runnable runnable = () -> System.out.println("Thead: " + Thread.currentThread().getName());
scheduledExecutorService.scheduleAtFixedRate(runnable, 0, 1L, TimeUnit.SECONDS);
}
有人知道为什么吗?我猜这是因为TestNG不支持后台线程,而只支持主线程,但是搜索不走运。任何文档或已知问题将不胜感激。
尝试主Java的awaitTermination等待所有线程完成。
scheduledExecutorService.awaitTermination(Long.MAX_VALUE,TimeUnit.SECONDS);
例如:ScheduledExecutorService.awaitTermination(1,TimeUnit.SECONDS);
有关更多信息,请检查javadoc