码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA线程中断

时间:2019-12-15 18:35:37      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:rup   请求   sum   关闭   java   end   暴力   resume   err   

建议自定义标志位和IsInterrupted标志位结合使用

 

使用自定义标志位的方法如果是阻塞方法(sleep),则自定义标志位无效;

如果单单使用IsInterrupted标志位,又因为java的多线程是协作方式而不是强制方式,所以可能不理会“打招呼”式的中断请求(特别是IO通信方法);

 

只有两个标志位都为真时才执行业务逻辑

 

 

1.不安全的取消:stop、suspend、resume;强制性、暴力的,不释放资源,可能死锁等

2. 处理不可中断的阻塞,比如io的读写、nio的selector的select,可以关闭底层的套接字;

3.死锁状态是不响应中断的

 

4.如何既可以响应普通的中断又可以处理不可中断的阻塞呢?

覆盖线程的interrupt方法

 

5.线程阻塞式API(sleep wait)被中断后,标志位会改成false,并抛出异常;所以捕获到中断异常后 需要设置标志位(特别是线程中有循环调用)

 

JAVA线程中断

标签:rup   请求   sum   关闭   java   end   暴力   resume   err   

原文地址:https://www.cnblogs.com/hzq3554055/p/12045155.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!