标签:尝试 顺序 程序 安全 死锁 线程 Android 拿锁
死锁
产生的原因:
- 多个操作者争夺多个资源(操作者>资源数>=2)
- 拿到资源不放手
- 争夺资源的顺序不对
危害:
- 线程不工作了,但是整个程序还是活着的
- 没有任何的异常信息可以供我们检查
- 一旦程序发生了发生了死锁,是没有任何的办法恢复的,只能重启程序,对正式已发布程序来说,这是个很严重的问题。
解决方式:
- 调整拿锁的顺序,采用尝试拿锁机制(tryLock)。
- 内部通过顺序比较,确定拿锁的顺序。
活锁
两个线程在尝试拿锁的机制中,发生多个线程之间互相谦让,不断发生同一个线程总是拿到同一把锁,在尝试拿另一把锁时因为拿不到,而将本来已经持有的锁释放的过程。
解决办法:每个线程休眠随机数,错开拿锁的时间。
线程饥饿
低优先级的线程,总是拿不到执行时间
标签:尝试,顺序,程序,安全,死锁,线程,Android,拿锁 来源: https://www.cnblogs.com/lordjinsdream/p/14090455.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。