进程中的一个线程死了所引发的后果

我们知道,同一个进程中的多个线程共享进程资源,包括主内存、文件句柄、锁资源等。那么当一个线程死了(非正常退出、死循环等)就会导致线程该占有的资源永远无法释放,从而影响其他线程的正常工作,看下面一个例子。

 1 import java.util.concurrent.locks.Lock;
 2 import java.util.concurrent.locks.ReentrantLock;
 3 
 4 public class ExceptInChildThread {
 5     public static void main(String[] args){
 6 
 7         Lock lock=new ReentrantLock(true);
 8         Runnable taskRuntimeExcept= new Runnable() {
 9             @Override
10             public void run() {
11                 lock.lock();
12                 int[] array = new int[2];
13                 System.out.println(array[2]);
14                 lock.unlock();
15             }
16         };
17         Thread threadRuntimeExcept = new Thread(taskRuntimeExcept);
18         threadRuntimeExcept.start();
19 
20         new Thread(new Runnable() {
21             @Override
22             public void run() {
23                 for (int i = 0; i < 100; i++) {
24                     lock.lock();
25                     System.out.println(i);
26                     lock.unlock();
27                 }
28             }
29         }).start();
30     }
31 }

输出:

Exception in thread "Thread-0" java.lang.ArrayIndexOutOfBoundsException: 2at edu.whu.swe.lxl.learn.except.ExceptInChildThread$1.run(ExceptInChildThread.java:15)at java.lang.Thread.run(Thread.java:748)

可以看到,第二个线程并没有执行下去。原因如下:

在第一个线程threadRuntimeExcept发生数组越界之后,线程异常没有捕获,导致线程异常退出。但是子线程的异常并不能传递到主线程(Runable的run方法没有任何throw),所以主线程仍然是可以运行的。问题在于,threadRuntimeExcept这个线程占有了lock这个锁,并在锁被释放之前异常退出了,那么这个锁就永远被占有了,等到第二个线程试图获取锁的时候,它就会一直阻塞在那。

Future虽然可以知道子线程发生了异常,但是却无法处理异常让子线程继续运行,子线程还是会异常退出。

转载于:https://www.cnblogs.com/JMLiu/p/9573259.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

心急吃不了热豆腐

良好的焊接是保证电路稳定持久工作的前提。下面给出了常见到的焊接缺陷。看看你遇到过多少种&#xff1f;▲ 图1 焊接中的常见问题▲ 图2 锡珠▲ 图3 扰动的焊接&#xff1a;在焊接点冷却过程中焊锡移动&#xff0c;造成焊接表面起雾、结晶、粗糙▲ 图4 立碑▲ 图5 冷结&…

ICON资源

http://openiconlibrary.sourceforge.net/downloads.html http://commons.wikimedia.org/wiki/Crystal_Clear&#xff08;强烈推荐&#xff09; http://www.everaldo.com/crystal/ http://www.iconspedia.com/&#xff08;很多国外nb的设计师&#xff0c;强烈推荐) http://www.…

会议升降计算机主机,升降式无纸化多媒体会议系统

升降式无纸化多媒体会议系统&#xff0c;我们将全面贯彻执行现代化企业管理理念以及“一站式****”的服务理念&#xff0c;内强素质外树形象&#xff0c;随时为全球广大客户提供更超值的产品与服务&#xff0c;更好更快得促进企业的稳健快速发展。精品主题&#xff0c;实战科普…

给电子类大学生一点求职建议

‍读大学的时候应该想清楚以后要干嘛&#xff0c;不然很可能要面对毕业即失业的窘境。每年近千万毕业生涌向社会&#xff0c;这个数字多少会给你点压力吧。因为我是专业对口的&#xff0c;所以我就从对口的角度&#xff0c;说下我们电子信息类专业学的啥以及怎么学。有很多人在…

Silverlight三维柱状图3D饼图的Silverlight图表组件案例

Silverlight三维柱状图3D饼图的Silverlight图表组件案例 开发环境&#xff1a;Visual Studio 2010 Silverlight 4 SQL2005 Silverlight开发的3D图表组件与及应用的项目截图&#xff1a; 本Silverlight开发的图表控件程序架构简洁清淅&#xff0c;是做二次开发的良好项目框架和核…

oppo专用计算机,OPPO手机助手

OPPO手机助手是OPPO官方最安全的手机助手&#xff0c;将OPPO手机和电脑连接后&#xff0c;可通过“OPPO手机助手”在电脑上管理手机中的应用程序、短信、通讯录(含通话记录)和图片等&#xff0c;还能在电脑上备份手机中的资料。OPPO手机助手是oppo手机的贴心管家。华军软件园提…

EDG牛逼

不管EDG有多牛&#xff0c;明天的早餐可以加个馒头&#xff01;EDG&#x1f42e;&#x1f37a;

[LeetCode][Python][C#]刷题记录 26. 删除排序数组中的重复项

这道题我真的纠结好久&#xff0c;因为没注意那个原地的题目要求&#xff0c;所以很奇怪怎么我电脑运行成功&#xff0c;但是LeetCode上运行就是不对。气哭。 感谢群友lino的帮助。他试了set方法不行&#xff0c;直接喂给我的答案了。。。 题目&#xff1a;26. 删除排序数组中的…

IE9给我带来的惊喜和不解(For Silverlight不解)

今天兴致冲冲的装上了IE9&#xff0c;发现IE9装好后不能打开我的Silverlight。提示我需要安装Silverlight插件 如图 后面深蓝色群里得朋友说他们没有这个问题&#xff0c;但是在64位的情况下会有这个问题&#xff0c;我查看了 我的Silverlight是好的&#xff0c;并且重新安装ru…

不要怕

昨晚很晚没有睡&#xff0c;一个原因是看比赛&#xff0c;一个原因是因为收到一个读者的留言&#xff0c;不是一般的留言&#xff0c;是很长的一段留言。有很多感同深受的地方&#xff0c;所以想着怎么开导他&#xff0c;就写了很多东西给他&#xff0c;一个是希望给他支持&…

bootstrap-daterangepicker插件运用

引入&#xff1a;daterangepicker.css、daterangepicker.js、moment.js、moment.min.js 链接&#xff1a;https://files.cnblogs.com/files/kitty-blog/moment.min.js、https://files.cnblogs.com/files/kitty-blog/moment.js、https://files.cnblogs.com/files/kitty-blog/dat…

计算机学业水平测试字处理多少分,【计算机应用论文】计算机应用基础学业水平的测试问题(共3624字)...

【摘要】本文从学业水平测试的作用&#xff0c;以及学业水平测试的安排进行了阐述&#xff0c;并指出了当前教学中存在的问题和解决的策略&#xff0c;具有一定的借鉴意义。【关键词】学业水平测试&#xff1b;计算机福建省于2016年下发了《福建省中等职业学校学生学业水平考试…

H3C交换机设置DHCP中继,配合Linux 服务器为多VLAN提供DHCP地址分配服务

H3C交换机设置DHCP中继&#xff0c;配合Linux 服务器为多VLAN提供DHCP地址分配服务 wanghaoqd 最近在单位用Linux做了一台DHCP服务器&#xff0c;使用H3C S7506R交换机做中继&#xff0c;为两个VLAN提供DHCP服务&#xff0c;经过两个月的测试效果很好。在这里把服务器和交换机的…

图灵书单 双十一超低优惠来袭

大家好&#xff0c;我是写代码的篮球球痴&#xff0c;最近当当网的运营争取了一波小福利&#xff0c;5折买书&#xff0c;如果最近想买书的朋友可以看看&#xff0c;使用下面的优惠码买书可以享受5折优惠。ON SALE又到了双十一购物狂欢节。大家有没有想要的好书一直等到双十一打…

后台JS写法

Response.Write("<script >window.alert(首页展示五个链接已满&#xff01;);window.location.hrefCompanyList.aspx;</script>"); defer 把 JS推迟到页面加载完成后

计算机论文指导记录16次,计算机毕业论文(设计)指导记录指导记录.pdf

论文(设计)管理表二昌吉学院本科毕业论文(设计)指导记录论文(设计)基于 .NET 的师生交互平台的设计与实现题目姓名 姓名学生 指导教师学号 职称指导次数 / 学生签指导内容(修改意见)时间 名/时间开题报告指导内容&#xff1a;第一次 1、国内外研究状况举例说明&#xff1b;2012…

8.在idea中配置maven

1.在IntelliJ IDEA中配置maven 打开-File-Settings 2.我们还可以在勾选一些其他选项 3.我们可以更新一下本地仓库和远程仓库,这个样在pom.xml文件中添加依赖jia包的坐标时就可以很好的提示出来 转载于:https://www.cnblogs.com/holly8/p/9585777.html

Linux文件系统十问

我在知乎和公众号上都提到过&#xff0c;我 2012 在腾讯工作的时候写过一篇《Linux文件系统十问》。总有人问我这篇文章在哪里能看到&#xff0c;如今外网唯一的正版链接-腾讯学堂也挂了&#xff0c;网上能搜到的全是盗版。所以今天我干脆就正式给大家发一遍。以下是这篇文章的…

AutoCAD VBA天圆地方的放样展开图

天圆地方展开图&#xff0c;代码如下。 Public Sub Main() Const PI As Double 3.1415926 On Error Resume Next Dim pt0 As Variant, ptBase(2) As Double pt0 ThisDrawing.Utility.GetPoint(, vbCrLf & "请输入”天圆地方“展开图下边中点<0,0>:") If …

计算机的硬件发展趋势为,高性能计算机的发展趋势

计算机模拟较物理实验的优势可概括为“多快好省”&#xff0c;多-能够在多种条件下、大范围内进行模拟&#xff0c;突破现实条件的限制(如微重力实验要用落塔以至航天器&#xff0c;而模拟只需设重力为零) ;快-免去实验装置的建设和运行时间&#xff0c; 许多装备的中试过程以年…