gpt4 book ai didi

Java ExecutorService 何时调用 shutdown()

转载 作者:搜寻专家 更新时间:2023-11-01 03:24:13 27 4
gpt4 key购买 nike

我是 Java 多线程的新手。我正在使用 ExecutorService 下载一堆网页进行分析。目前我的方法是提交所有 Callables 并将 Future 对象放入循环列表中,然后调用 shutdown()awaitTermination(),最后我处理 future 列表.
我的问题是在我的情况下,像这样填写 future 列表后可以放置 shutdown() 吗?由于 Future 的 get() 已经阻塞,直到任务完成,似乎我应该在完成所有 futures 处理后调用它。

最佳答案

注意shutdown()的javadoc

Initiates an orderly shutdown in which previously submitted tasks are executed, but no new tasks will be accepted. Invocation has no additional effect if already shut down.

这是一个干净的停止。提交的任务将运行直到完成。由于您还有 awaitTermination()

Blocks until all tasks have completed execution after a shutdown request, or the timeout occurs, or the current thread is interrupted, whichever happens first.

您的 Future#get() 方法调用将立即返回(如果 awaitTermination() 没有超时)。你在做什么没有问题。


确保您的任务不会永远运行。

关于Java ExecutorService 何时调用 shutdown(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19418164/

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