Bootstrap

Java Thread类的interrupted和isInterrupted的区别

Thread对象.interrupt()方法设置线程的中断状态为true,并且可以用来中断一个正处于阻塞状态(调用了sleep,wait,join方法)的线程,使得处于阻塞状态的线程抛出一个InterruptedException异常,但jvm会重新将线程的中断标志重新设置为false

Thread.interrupted()方法是返回当前线程的中断状态,并且当前线程的中断状态被方法内部清除(如果原来是true则恢复为false,再次调用时返回的就是false了)。这也说明只有当前线程才能清除自己的中断位。

Thread对象.isInterrupted()方法可以查询任意线程对象的中断状态,并且不会清空该线程的中断状态。


interrupted()和isInterrupted()这两个方法调用的是Thread类的本地方法,只不过ClearInterrupted(是否要清除状态位参数值不同:

private native boolean isInterrupted( boolean ClearInterrupted);


参考自:http://www.cnblogs.com/w-wfy/p/6414801.html


悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;