我有这段代码:
public void run()
{
System.out.println("ciao");
try{
throw new InterruptedException();
}catch(InterruptedException ie){ //catch will clear the interrupted status
Thread.currentThread().interrupt();}//it will set back the interrupted status
但是,如果我调用以下方法,则遵循此模式:
Thread1 t1 = new Thread1();//obviously Thread1 extends Thread
t1.start();
System.out.println(t1.isInterrupted());
结果为“假”;
另一方面,如果我删除throw new InterruptedException();
并尝试从主要方法中中断它,它会返回我预期的结果:
Thread1 t1 = new Thread1();
t1.start();
t1.interrupt();
System.out.println(t1.isInterrupted());
它将返回“真”。
这只是一个一致性内存问题还是我在代码中做错了什么?提前致谢。
编辑:我编辑了删除方法 join() 的问题,如 JB Nizet 所示,问题仍然存在。