TestNG静默杀死ExecutorService

问题描述 投票:0回答:1

我正在尝试编写一个测试,该测试使用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不支持后台线程,而只支持主线程,但是搜索不走运。任何文档或已知问题将不胜感激。

testng
1个回答
0
投票

尝试主Java的awaitTermination等待所有线程完成。

scheduledExecutorService.awaitTermination(Long.MAX_VALUE,TimeUnit.SECONDS);

例如:ScheduledExecutorService.awaitTermination(1,TimeUnit.SECONDS);

有关更多信息,请检查javadoc

© www.soinside.com 2019 - 2024. All rights reserved.