gpt4 book ai didi

java - 为什么使用 Thread.currentThread().isInterrupted() 而不是 isInterrupted()?

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

我对 Thread 子类取消政策的实现有疑问。这样做似乎是常见的做法:

class A extends Thread {

[...]

public final void run() {
try {
while(!Thread.currentThread().isInterrupted()) {
[...]
}
} catch (InterruptedException consumed) {
}
}

public final void cancel() {
interrupt();
}
}

我的问题是关于 Thread.currentThread()... 为什么通常的做法是使用 currentThread() 来检查中断标志而不是在 cancel() 方法中设置它?像这样调用 A 的 isInterrupted() 方法是否足够:

while (!isInterrupted()) {
[...]
}

我在 Brian Goetz 关于并发 Java 或 stackoverflow 的 Thread JavaDoc 中都找不到答案。

提前感谢您的见解!

干杯,乔治

最佳答案

在您的情况下,只需调用 !isInterrupted() 就足够了,因为您是从 Thread 类扩展的。通常您不会从 Thread 扩展 - 这就是您调用 Thread.currentThread() 的原因。

关于java - 为什么使用 Thread.currentThread().isInterrupted() 而不是 isInterrupted()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11682955/

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