多线程二死锁,活锁,饿死,阻塞的理解
假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情请点击http://106.12.206.16:8080/qingruihappy/index.html
死锁
线程A或者B需要过独木桥(使用该进程),而C还没有走完(进程还在占用),于是三方僵死;
也可以是没有C 的情况下,A和B互不礼让僵死。 A和B都认为自己优先级最高应该使用该进程。
活锁
线程A和B都需要过桥(都需要使用进程),而都礼让不走(那到的系统优先级相同,都认为不是自己优先级高),就这么僵持下去。
饿死
这是个独木桥(单进程),桥上只能走一个人,B来到时A在桥上,B等待;而此时比B年龄小的C来了,B让C现行(A走完后系统把进程分给了C),C上桥后,D又来了,B又让D现行(C走完后系统把进程分个了D)以此类推B一直是等待状态.
阻塞
死锁:
1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。
2)请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。
3)不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。
4)环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。
活锁:
活锁指的是任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试,失败,尝试,失败。 活锁和死锁的区别在于,处于活锁的实体是在不断的改变状态,所谓的“活”, 而处于死锁的实体表现为等待;活锁有可能自行解开,死锁则不能。活锁可以认为是一种特殊的饥饿。 下面这个例子在有的文章里面认为是活锁。实际上这只是一种饥饿。因为没有体现出“活”的特点。 假设事务T2再不断的重复尝试获取锁R,那么这个就是活锁。
饥饿:
饥饿 ,与死锁和活锁非常相似。是指一个可运行的进程尽管能继续执行,但被调度器无限期地忽视,而不能被调度执行的情况。[1] 饥饿可以通过先来先服务资源分配策略来避免。
假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情请点击http://106.12.206.16:8080/qingruihappy/index.html
作者:Jokerone_
链接:https://www.jianshu.com/p/0494ab7c96f9
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
多线程二死锁,活锁,饿死,阻塞的理解相关推荐
- 进程饥饿和死锁及饿死
饥饿是指系统不能保证某个进程的等待时间上界,从而使该进程长时间等待,当等待时间给进程推进和响应带来明显影响时,称发生了进程饥饿.当饥饿到一定程度的进程所赋予的任务即使完成也不再具有实际意义时称该进程被 ...
- 操作系统饥饿现象_操作系统中的饿死现象怎样理解?
什么是进程的饥饿和饿死? 在一个动态系统中,资源请求与释放是经常性发生的进程行为.对于每类系统资源,操作系统需要确定一个分配策略,当多个进程同时申请某类资源时,由分配策略确定资源分配给进程的次序. 资 ...
- 操作系统学习--死锁和饿死
一.死锁原理 一组互斥的进程资源竞争或相互通信的永久阻塞 二.两种资源 (1)可重用资源:不会由于消费而减少,如I/O,存储空间.一次只能供一个进程安全使用. 处理这类死锁的策略施加关于资源请求顺序的 ...
- 【转】细说.NET中的多线程 (二 线程池)
上一章我们了解到,由于线程的创建,销毁都是需要耗费大量资源和时间的,开发者应该非常节约的使用线程资源.最好的办法是使用线程池,线程池能够避免当前进程中大量的线程导致操作系统不停的进行线程切换,当线程数 ...
- java中活锁和死锁的区别_死锁、活锁、饿死和阻塞的个人理解
以下个人理解,请各位前辈多多指教: 死锁: ① 互斥条件:指进程对所分配到的资源进行排它性使用,在一段时间内某资源只由一个进程占用,如果此时还有其他进程请求资源,则请求者只能等待,直至占有资源的进程被 ...
- 死锁、活锁、饿死和阻塞的个人理解
以下个人理解,请各位前辈多多指教: 死锁: ① 互斥条件:指进程对所分配到的资源进行排它性使用,在一段时间内某资源只由一个进程占用,如果此时还有其他进程请求资源,则请求者只能等待,直至占有资源的进程被 ...
- 死锁、活锁和饿死的理解(转)
死锁.活锁和饿死的理解(转) 看到一组漫画,很形象的说明了死锁.活锁和饿死的区别,原文链接:http://f.dataguru.cn/thread-541686-1-1.html ,这篇文章的死锁有点 ...
- java 活锁 线程饿死,JAVA并发编程(四)线程死锁、饥饿、活锁
JAVA并发编程(四)线程死锁 线程死锁 什么是线程死锁呢? 为什么会线程死锁呢? 如何避免线程死锁? 什么是饥饿呢? 什么是活锁呢? 线程死锁 什么是线程死锁呢? 死锁是指两个或两个以上的线程在执行 ...
- 死锁与活锁的原因 与解决方法(附加“饿死”)
死锁与活锁的原因 与解决方法(附加"饿死") 参考文章: (1)死锁与活锁的原因 与解决方法(附加"饿死") (2)https://www.cnblogs.co ...
最新文章
- 6.18docker(一)Compose 模板文件
- h2 迁移到 mysql_[saiku] 将saiku自带的H2嵌入式数据库迁移到本地mysql数据库
- VB.NET(2005)中关于dll调用的错误信息(转)
- 学c语言用vs,毫无编程基础的小白准备学习C语言,用VC6还是VS2015?
- R语言观察日志(part20)--包的组件之R代码
- H - Checker FZU - 2041
- 想办法解决window刷新的问题
- 柯洁获清华大学免试入学推荐资格
- 【程序设计】模块化程序设计
- XMPP 扎金花各种网络传送之音频发送
- C#算法设计查找篇之04-斐波那契查找
- ListView上拉加载,下拉刷新 PullToRefresh的使用
- CentOS7安装GNOME可视化界面 和 远程访问
- Mapreduce和yarn-内存设置
- 智慧工厂用到的技术_CCF VC物联网应用技术专业工作组走进苏宁物流智慧仓储工厂参观学习...
- DFT信道估计步骤及实例
- 一分钟学会清理垃圾运行命令
- 数字签名的原理和应用
- php的aes加密解密算法,PHP实现的简单AES加密解密算法实例
- python视频笔记17(控制窗体)
热门文章
- ThinkServer RD640 上安装redhat企业版6.5
- 儿童抽动症有哪些表现?
- Android实时网络质量检测
- VeryCD的名言集锦
- 超过2T的磁盘格式化
- 计算机毕业设计SSM道路桥梁工程知识文库系统【附源码数据库】
- AD22安装Ansys EDB Exporter 扩展 将PCB导入到ANSYS Electronics Desktop
- 微信小程序最全搜索功能
- 【Spring Boot】Spring Boot 2.x + Spring Security OAuth2 2.3.3 出现 bad client credentials 错误的踩坑记录
- kakadu——JPEG2000图像压缩软件的安装和使用