gpt4 book ai didi

java - .awaitTermination() 是否在执行程序中完成工作之前建立 happens-before?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:02:01 25 4
gpt4 key购买 nike

我多年来一直存在的问题:在此伪代码中,

ExecutorService svc = Executors.newFixedThreadPool(3);
svc.submit(new Runnable() { /* code A */ });
svc.shutdown();
if(svc.awaitTermination(...)) {
// code B

.awaitTermination() 没有被记录为在代码 A 和 B 之间建立happens-before它不是的原因是什么

ExecutorServiceconcurrent package javadocs 定义了happens-before在任务和完成的工作之间它们被提交,但在执行者任务和成功.awaitTermination() 之后的代码之间没有定义> 打电话。

请注意,我并不是要就如何重构我的代码以利用记录在案的发生前关系提出设计批评。我的问题是,在这种情况下,文档没有提到 happens-before 是有原因的吗?

(请注意,这不是 22665198 的副本,尽管标题非常贴切。)

最佳答案

ExecutionService,你确定吗?您是说 ExecutorService 吗?此外,没有不带参数的 ExecutorService.awaitTermination() 方法。 ExecutorService.awaitTermination(long, TimeUnit)方法接收等待超时的时间量。显然,如果它因为超时而返回,它不能保证 happens-before 关系,因此它不能在其合约中宣传这种保证,因为它并非适用于所有情况。

关于java - .awaitTermination() 是否在执行程序中完成工作之前建立 happens-before?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30605289/

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