博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程结束的正确方式
阅读量:5053 次
发布时间:2019-06-12

本文共 708 字,大约阅读时间需要 2 分钟。

1、Thread.suspend(),Thread.resume(),Thread.stop()方法都已经废弃了,因为可能导致死锁。

2、抛出InterruptedException将导致中断标识位复位

3、多线程编程一定要注意阻塞语句,阻塞一定不能长久的阻塞,应该能被interrupt,否则则可能会永久的锁住线程。

4、ThreadPoolExecutor采取的都是Thread.interrupt()来结束线程。

5、结束线程的3种方式:(程序里面2和3都应该包含)

       1、自己设置业务结束标志(一般使用volatile设置一个标志)

       2、调用interrupt()来中断线程,被中断的线程如果处于可相应中断的阻塞状态(NIO),则能在InterruptedException里面结束

       3、调用interrupt()来中断线程,被中断的线程不能响应中断异常

              此时分为两种情况:1、线程处于阻塞状态

                                            非NIO的IO操作    可以通过关闭IO底层资源来触发被中断线程响应IOException,然后在IOException里面通过Thread.interrupted()来判断是否被中断来结束

                                            synchronized和Lock的加锁操作     怎么解决中断?         Lock可以通过可中断的加锁方式,但是synchronized呢

                                       2、非阻塞状态

                                            通过Thread.interrupted()来判断是否被中断来结束

6、在处理线程结束的代码里需要使用try{}finally{}代码,具体的模板可以参见Thing in java.

转载于:https://www.cnblogs.com/YDDMAX/p/5223190.html

你可能感兴趣的文章
【bzoj1913】 Apio2010—signaling 信号覆盖
查看>>
返回上一步
查看>>
Appium自动化测试框架简介
查看>>
linux磁盘管理
查看>>
php实现二维码
查看>>
CQOI2007 涂色
查看>>
Delphi进制转换(二进制/十进制/十六进制)
查看>>
数据结构:冒泡排序及其改进、插入排序和希尔排序
查看>>
HTML基础 --- HTML属性
查看>>
mongodb复制集Replica Set使用简介
查看>>
poi 读取excel row.getCell() 为null
查看>>
bzoj 1646 抓住那头牛
查看>>
SQL面试题
查看>>
JavaScript_Util_04
查看>>
给网站添加选项卡图标
查看>>
android 2个按钮 显示在同一列
查看>>
4.22 IP通信基础
查看>>
Intellij IDEA使用总结(转载)
查看>>
iOS如何隐藏各种bar
查看>>
IIS解决上传文件大小限制
查看>>