|
|
51CTO旗下网站
|
|
移动端

1.6.5 线程中断

《Java多线程与Socket:实战微服务框架》第1章多线程基础,本书尽量采用简要和通俗易懂的方式来介绍多线程知识。本节为大家介绍线程中断。

作者:庞永华来源:电子工业出版社|2019-03-26 15:53

1.6.5 线程中断

前面我们讲到interrupt()并不会立即“中断”某个线程,它只是向该线程发送一个中断信号,修改其中断标识位。要真正地“中断”线程的执行,需要在线程所执行的代码中不时地检测这一中断标识位,以判断线程是否应该被“中断”(中断标识位是否为true)。

比如,Object对象的wait()方法、Thread的sleep()和join()方法,都会判断中断标识位以响应中断请求。在调用这些方法让当前线程进入阻塞状态后,如果我们调用该线程对象的interrupt()方法修改其中断标识位为true,上述方法将“中断”当前的阻塞状态,并抛出InterruptedException异常以便调用程序处理。

如果希望线程能正确地处理中断,则需要在合适的位置调用Thread.interrupted()来检查中断标识位,决定是否直接退出执行或者抛出异常中断当前的执行。例如:

  1. public void run() {  
  2. while (!Thread.interrupted()) {  
  3. // …  
  4. }  

注意:interrupted()方法返回true后,再次调用将返回false。


喜欢的朋友可以加入官方的读书群

51CTO读书频道二维码


51CTO读书会第9群:808517103

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

Jenkins Pipeline可持续化集成

Jenkins Pipeline可持续化集成

优化运维流水线
共3章 | youerning

198人订阅学习

笑熬浆糊之职场那些事

笑熬浆糊之职场那些事

IT人的职场心法
共22章 | Bear_Boss

79人订阅学习

Redis运维秘籍

Redis运维秘籍

运维标配技术
共15章 | one叶孤舟

199人订阅学习

读 书 +更多

计算机与网络基础知识——考点解析及模拟训练

本书是根据全国计算机技术与软件专业技术资格(水平)考试的“计算机网络管理员考试大纲”所要求的考试范围而编写的辅导用书。全书共分10章...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客