JAVA线程中断

JAVA线程中断

中断机制

如果线程被interrupt,大概有这么几种情况。

  • 1、如果线程堵塞在object.wait、Thread.join和Thread.sleep,将会清除线程的中断状态,并抛出InterruptedException;

  • 2、如果线程堵塞在java.nio.channels.InterruptibleChannel的IO上,Channel将会被关闭,线程被置为中断状态,并抛出java.nio.channels.ClosedByInterruptException;

  • 3、如果线程堵塞在java.nio.channels.Selector上,线程被置为中断状态,select方法会马上返回,类似调用wakeup的效果;

  • 4、如果调用thread.interrupt()方法,仅仅是设置线程的中断状态为true。

 

 

中断的使用

中断是实现任务取消的最合理的方式。在广泛接受的编程规范,中断处理应该尽可能迅速。

一般而言,我们提供的库不应该捕获中断,而是应该直接抛出中断让调用者决定。

 

 

posted @ 2020-09-22 14:57  mzjnumber1  阅读(204)  评论(0编辑  收藏  举报