为什么我要清除中断状态,但仍然被中断

时间:2018-07-04 09:12:37

标签: java locking interrupt

我尝试使用LockSupport类来控制线程的运行和等待,但是发现了一些问题。

Thread thread = Thread.currentThread();
thread.interrupt();                     // Add interrupt state
Thread.interrupted();                   // Clean up the interrupt state
LockSupport.parkNanos(10_000_000_000L); // Wait 10 seconds
System.out.println("Finish!");

但是结果不是等待10秒。

Thread thread = Thread.currentThread();
// thread.interrupt();
// Thread.interrupted();
LockSupport.parkNanos(10_000_000_000L); // Wait 10 seconds
System.out.println("Finish!");

这是一次成功的等待10秒。

我尝试以其他方式等待

Thread thread = Thread.currentThread();
thread.interrupt();              // Add interrupt state
Thread.interrupted();            // Clean up the interrupt state
synchronized (thread) {
    thread.wait(10_000);         // Wait 10 seconds
}
System.out.println("Finish!");

等待也很正常。

我想知道为什么。

0 个答案:

没有答案