废话不多说,先贴上bug代码
public static void main(String[] args) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//轮询线程等待线程中断
while (!Thread.currentThread().isInterrupted()) {
Thread.yield();
}
System.out.println("dead...");
}
});
thread.start();
//中断线程
thread.interrupt();
}
在此程序中,我的本意是通过while循环来轮询线程是否中断,若中断则线程正常结束。但结果并未按照我预料的方向发展。
执行结果:
由结果可以看出,sleep()方法有抛出线程中断异常,但我的轮询并未能检测到线程中断标志,从而导致线程未能结束。
但是如果将sleep()方法注释掉后线程就能正常结束