gpt4 book ai didi

java - 在捕获 InterruptedException 后我们真的应该中断当前线程吗?

转载 作者:行者123 更新时间:2023-12-02 08:52:25 24 4
gpt4 key购买 nike

我有代码,需要等待一段时间作为繁忙等待的一部分(由于遗留代码,我无法更改那么多)。我已经阅读了为什么我应该在此处执行此操作的推理 [1] 和 [2],并且它是显而易见的经验法则。经常这样做。 IIUC 它是根据需要出售的,因为调用堆栈上方的一些代码可以执行以下操作:

while (!Thread.currentThread().isInterrupted()) {

并且没有调用

Thread.currentThread().interrupt()

或者重新抛出它会失败。

现在回到我的例子。我将小方法称为 sleep。如果我在忙碌的等待中被吵醒,我不在乎,如果有必要的话我会再睡。如果实际上有一个对线程中断标志感兴趣的代码,我绝对不希望它启动,因为我不想停止这个操作,在这种情况下,吞咽而不重试并且不设置标志似乎是正确的操作,但是我没有看到任何提及,吞咽在某些情况下可以做出正确的 react 。

最佳答案

有一本关于Java并发的好书:Java Concurrency in Practice 。第 7 章第 7.1.3 节中有这样的文字:

Only code that implements a thread's interruption policy may swallow an interruption request. General-purpose task and library code should never swallow interruption requests.

因此,在某些情况下可能吞掉中断。

关于java - 在捕获 InterruptedException 后我们真的应该中断当前线程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60692593/

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