gpt4 book ai didi

java - 等待两个 ExecutorServices 的首选方式?

转载 作者:行者123 更新时间:2023-12-01 19:06:21 25 4
gpt4 key购买 nike

我有两个 ExecutorService,一个用于保存生产者,另一个用于保存消费者。我正在使用awaitTermination 方法,该方法是阻塞的并且需要超时参数。但我想以相同的超时时间等待两个 ExecutorServices。由于awaitTermination调用被阻塞,我不能这样做:

    this.producersExecutorService.awaitTermination(4, TimeUnit.HOURS);
this.consumersExecutorService.awaitTermination(4, TimeUnit.HOURS);

因为最终总共会等待 8 个小时。我该怎么办?

最佳答案

如果您正在等待两者,只需等待其中一个并设置 4 小时的超时时间,然后等待另一个(无论剩余时间如何)。如何确定取决于您 - 我可能会根据第一次调用 awaitTermination 之前的当前时间计算出所需的结束时间,然后计算出剩余时间基于该时间与当前时间之间的差异。

从文档中并不清楚如果您传递负时间会发生什么 - 您可能应该对此进行调查,并可能采取预防措施(例如,如果第一个调用在恰好超时时完成,然后您最终会在一毫秒后计算第二个超时)。

关于java - 等待两个 ExecutorServices 的首选方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9931097/

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