java中线程的中断状态标志在哪里,为什么interrupt()方法是静态的
第一个问题是:中断状态标志假定的中断()方法在哪里: 第二个问题是:java中线程的中断状态标志在哪里,为什么interrupt()方法是静态的,java,interrupt,Java,Interrupt,第一个问题是:中断状态标志假定的中断()方法在哪里: 第二个问题是: 为什么被中断()?和isInterrupted非静态?语言规范没有规定如何实现中断状态。在hotspot中,您可以在JVM代码中找到实现细节。例如,对于linux,大约在第4140行 中断是静态的,因为它检查当前线程状态。换句话说,如果在主线程上调用new Thread().interrupted(),则在主线程被中断时,而不是在新线程被中断时,将得到true isInterrupted检查调用该方法的线程是否中断。在上面的示
为什么被中断()?和isInterrupted非静态?语言规范没有规定如何实现中断状态。在hotspot中,您可以在JVM代码中找到实现细节。例如,对于linux,大约在第4140行
中断
是静态的,因为它检查当前线程状态。换句话说,如果在主线程上调用new Thread().interrupted()
,则在主线程被中断时,而不是在新线程被中断时,将得到true
isInterrupted
检查调用该方法的线程是否中断。在上面的示例中,它将返回状态为new Thread()
,即false
最后,这两种方法之间的一个重要区别是interrupted
清除中断状态。通常,重置它是一种良好做法,除非您的代码负责给定线程的生命周期:
if (Thread.interrupted()) {
Thread.currentThread().interrupt();
//etc.
}
if (Thread.interrupted()) {
Thread.currentThread().interrupt();
//etc.
}