amj*_*amj 0 java multithreading interrupt
从设置线程状态的角度来看,我不清楚这两种方法.
Java Docs说Thread.interrupt()设置线程中断状态标志并调用Thread.interrupted()方法给出线程的状态并清除标志.
当这在真实场景中使用时.. ??
当其他一些线程调用Thread.interrupt()时,该方法将Thread的中断状态标志(最初为false)设置为true.如果Thread处于阻塞方法,如Thread.sleep(),Thread.join()或Object.wait(),则解除阻塞并抛出InterruptedException.
Thread.interrupted()是一个静态方法,可用于检查中断状态标志的当前值,true或false.它还清除中断状态,将标志设置为false.连续两次调用它可能会第二次返回false,即使它第一次返回true(除非线程再次被中断,在第一次调用后将中断状态标志设置为true)
注意第三种方法Thread.isInterrupted(),它可以在不重置的情况下检查中断状态.
典型用例:
while(true)糟糕,while(!Thread.interrupted())更好)