12-结果分析
结果分析
下面是以上案例运行结果的截图。从图中可以看到, PrimeGenerator
线程在检测到自己被中断后,输出信息并结束了运行。
Thread
类有一个用来保存线程是否已被中断的状态属性,其属性值为 boolean
类型,默认值为 false
。当调用一个线程对象的 interrupt()
方法时,该状态属性将修改为 true
。而方法 isInterrupted()
仅返回该状态属性的值。
在 main()
方法中,输出了中断线程的一些状态信息。在本案例中,虽然在这些代码之前调用了线程的中断,但是在执行这些代码时,任务线程并未执行到中断判断和处理过程,因此,此时输出的线程状态为 RUNNABLE
,方法 isInterrupted()
的结果为 true
,当然方法 isAlive()
的结果也为 true
。如果这些代码执行是在 Thread
中断完成之后[可以制造机会,如通过在 main
调用 sleep()
使得主线程休眠1s,使得 task
线程完成中断,那么 isInterrupted()
和 isAlive()
的结果将为 false
。