gpt4 book ai didi

java - 如何在不关闭的情况下等待 ExecutorService 完成?

转载 作者:行者123 更新时间:2023-11-29 03:04:45 24 4
gpt4 key购买 nike

我在 ExecutorService 中有一些 Runnable,并且想在以下之后加入线程:

private void foo() {
//...
exec.execute(new Runnable(){
public void run() {
if (bar()) {
foo();
}
}
});
}

//exec.shutdown()
//exec.awaitTermination();

因为它在 Runnable 中调用自己,所以我不能直接关闭,因为它可能会阻止自己创建新任务。

如何在不关闭的情况下等待所有线程完成?有什么方法可以返回 future ,以便我可以使用 Future::get()

最佳答案

Executor.submit(Runnable)将根据 javadoc 返回一个 Future:

The Future's get method will return null upon successful completion.

因此您仍然可以调用 future.get() 并让它阻塞直到任务完成。

Future<?> future =  exec.submit(new Runnable(){
public void run() {
if (bar()) {
foo();
}
}
});

//blocks
future.get();

关于java - 如何在不关闭的情况下等待 ExecutorService 完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32656610/

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