gpt4 book ai didi

java - ExecutorService 在 JUnit 测试中不执行 Runnables

转载 作者:行者123 更新时间:2023-12-02 11:16:07 25 4
gpt4 key购买 nike

我有一个要测试的执行器服务。

我有几个需要调用的任务(Runnables),然后调用wait(),并且虚拟计时器在几秒钟后调用notify()

我这样做是为了检查所有任务是否按顺序执行并在一段时间后执行。

问题是我的 Runnable 的 run() 方法根本没有被调用。我设置了一个断点,但代码执行没有到达该断点。

在简单的编码中它工作得很好。任务排队,它们调用 wait() 直到未获得响应或触发超时,它们调用 notify() 并执行下一个任务。

问题出在我运行测试时。

对此有什么想法吗?

最佳答案

test 方法在其他线程命中 waitnotify 之前退出时,可能会发生这种情况。

尝试调用:

executorService.shutdown();
try {
executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {

}

退出test方法之前。它将阻止测试方法,直到所有 Runnable 完成。

关于java - ExecutorService 在 JUnit 测试中不执行 Runnables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50273587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com