gpt4 book ai didi

java - 如何知道线程需要完成的确切时间

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

我有两个线程 t1 和 t2。他们都做了一些计算,我试图阻塞主线程直到 t1 和 t2 完成。我使用了 .awaitTermination() 如下所示,但问题是,尽管它是一个 if 语句,但 .awaitTermination() 进入无限循环。

请帮助我找到正在发生的事情。我是否应该在不知道 t1 和 t2 需要完成的确切时间的情况下指定时间量?

 executor.execute(new RunnableClass(bgr,3))
executor.execute(new RunnableClass(bgr,7))
executor.shutdown();

if (executor.awaitTermination(3, TimeUnit.SECONDS)) {
print("terminated")
}

最佳答案

如果你使用Java 8,你可以使用CompletableFuture<T>反而。它们定义了一些有用的方法,例如 join 以等待它们的执行并将它们链接在一起。您的示例如下所示:

final CompletableFuture<Void> future1 = CompletableFuture.runAsync(new RunnableClass(bgr, 3), executor);
final CompletableFuture<Void> future2 = CompletableFuture.runAsync(new RunnableClass(bgr, 7), executor);
CompletableFuture.allOf(future1, future2).join(); // blocks until both finished
executor.shutdown();

可以找到很棒的介绍here .

关于java - 如何知道线程需要完成的确切时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30015227/

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