如何了解Java中的中断?

时间:2013-04-15 07:35:08

标签: java multithreading interrupt

Thread.interrupt会中断sleepjoinwait等来电。我想知道它是如何实现的。

我知道Thread.interrupt设置了一个标记isInterruptedwait只是轮询这个标志吗?我希望它没有。所以我的问题是wait如何“知道”中断。

3 个答案:

答案 0 :(得分:2)

wait()不会进行投票。 interrupt()检查被中断线程的状态。如果它运行,它只是设置标志。如果它位于wait()sleep()join()中,则中断线程也会将其排入处理器。当被中断的线程恢复执行时,它首先检查该标志,如果该标志已打开则抛出InterruptedException。

答案 1 :(得分:1)

等待和加入工作的方式与睡眠不同,等待/加入不检查中断标志。如果你打断了一个稍后调用sleep()的线程,它会被中断,但如果它调用wait()或join(),就不会发生任何事情。

答案 2 :(得分:0)

这是一个操作系统问题,因为系统正在处理线程而不是JVM。每个操作系统以不同的方式处理线程