JAVA线程中断
Posted 呼志强的资料索引
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA线程中断相关的知识,希望对你有一定的参考价值。
建议自定义标志位和IsInterrupted标志位结合使用
使用自定义标志位的方法如果是阻塞方法(sleep),则自定义标志位无效;
如果单单使用IsInterrupted标志位,又因为java的多线程是协作方式而不是强制方式,所以可能不理会“打招呼”式的中断请求(特别是IO通信方法);
只有两个标志位都为真时才执行业务逻辑
1.不安全的取消:stop、suspend、resume;强制性、暴力的,不释放资源,可能死锁等
2. 处理不可中断的阻塞,比如io的读写、nio的selector的select,可以关闭底层的套接字;
3.死锁状态是不响应中断的
4.如何既可以响应普通的中断又可以处理不可中断的阻塞呢?
覆盖线程的interrupt方法
5.线程阻塞式API(sleep wait)被中断后,标志位会改成false,并抛出异常;所以捕获到中断异常后 需要设置标志位(特别是线程中有循环调用)
以上是关于JAVA线程中断的主要内容,如果未能解决你的问题,请参考以下文章