我对 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()) {
[...]
}
我在 Thread JavaDoc、Brian Goetz 关于并发 Java 或 stackoverflow 的优秀书籍中都找不到答案。
提前感谢您的见解!
干杯,乔治