以下个人理解,请各位前辈多多指教:

死锁:

① 互斥条件:指进程对所分配到的资源进行排它性使用,在一段时间内某资源只由一个进程占用,如果此时还有其他进程请求资源,则请求者只能等待,直至占有资源的进程被释放。

② 请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。

③ 不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。

④环路等待条件:在发生死锁时,必然存在一个进程,资源的唤醒链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。

解释:

线程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一直是等待状态.

阻塞:

不用解释了吧?

江疏影讲Java@目录

死锁、活锁、饿死和阻塞的个人理解相关推荐

  1. java中活锁和死锁的区别_死锁、活锁、饿死和阻塞的个人理解

    以下个人理解,请各位前辈多多指教: 死锁: ① 互斥条件:指进程对所分配到的资源进行排它性使用,在一段时间内某资源只由一个进程占用,如果此时还有其他进程请求资源,则请求者只能等待,直至占有资源的进程被 ...

  2. 多线程二死锁,活锁,饿死,阻塞的理解

    假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情 ...

  3. 进程饥饿和死锁及饿死

    饥饿是指系统不能保证某个进程的等待时间上界,从而使该进程长时间等待,当等待时间给进程推进和响应带来明显影响时,称发生了进程饥饿.当饥饿到一定程度的进程所赋予的任务即使完成也不再具有实际意义时称该进程被 ...

  4. 操作系统学习--死锁和饿死

    一.死锁原理 一组互斥的进程资源竞争或相互通信的永久阻塞 二.两种资源 (1)可重用资源:不会由于消费而减少,如I/O,存储空间.一次只能供一个进程安全使用. 处理这类死锁的策略施加关于资源请求顺序的 ...

  5. 死锁、活锁和饿死的理解(转)

    死锁.活锁和饿死的理解(转) 看到一组漫画,很形象的说明了死锁.活锁和饿死的区别,原文链接:http://f.dataguru.cn/thread-541686-1-1.html ,这篇文章的死锁有点 ...

  6. java 活锁 线程饿死,JAVA并发编程(四)线程死锁、饥饿、活锁

    JAVA并发编程(四)线程死锁 线程死锁 什么是线程死锁呢? 为什么会线程死锁呢? 如何避免线程死锁? 什么是饥饿呢? 什么是活锁呢? 线程死锁 什么是线程死锁呢? 死锁是指两个或两个以上的线程在执行 ...

  7. 死锁与活锁的原因 与解决方法(附加“饿死”)

    死锁与活锁的原因 与解决方法(附加"饿死") 参考文章: (1)死锁与活锁的原因 与解决方法(附加"饿死") (2)https://www.cnblogs.co ...

  8. java避免活锁.死锁的解决,死锁 活锁 饥饿 出现原因及解决方案

    文章目录 死锁 概念 死锁示例 为什么会出现死锁呢? 如何解决死锁呢? 解决死锁代码实现 活锁 概念 活锁示例: 如何解决活锁呢? 饥饿 概念 如何解决饥饿呢? 死锁 概念 死锁:一组互相竞争资源的线 ...

  9. 黄金3:雨露均沾-不要让你的线程在竞争中被“饿死”

    欢迎来到<并发王者课>,本文是该系列文章中的第13篇. 在上篇文章中,我们介绍了避免死锁的几种策略.虽然死锁臭名昭著,然而在并发编程中,除了死锁之外,还有一些同样重要的线程活跃性问题值得关 ...

最新文章

  1. 64位Fedora运行32位C++程序中int精度溢出处理
  2. mysql删除有空格字符名称的触发器
  3. Linux查看进程和终止进程的技巧
  4. [IE 技巧] 显示/隐藏IE 的菜单/工具栏
  5. MapReduce 作业调试
  6. 【ES6(2015)】Generator
  7. linux [1045] Access denied for user 'root'@'localhost' (using password: YES)
  8. php强制时间,php如何强制转成字符串
  9. 华氏温度转摄氏温度c语言作业,C语言摄氏度互相转换华氏
  10. 第2章 ISA防火墙策略配置
  11. Codeforces 1089K King Kog's Reception(线段树)
  12. 前端搜索引擎优化SEO优化之Title 和 Meta 标签
  13. 小猪的Python学习之旅 —— 14.项目实战:抓取豆瓣音乐Top 250数据存到Excel中
  14. 数组队列存储结构的简单实现例子
  15. 记一次3dmax入门
  16. JAVA数组 day03
  17. 利用Grapher Script 重复绘图
  18. 通过单管道(pipe)实现两个进程间双向通信
  19. 【六大设计原则-SOLID】
  20. zf3 php,php – ZF3中的ServiceManager

热门文章

  1. 本科课程【虚拟现实引擎Unity3D】实验4 - 卡牌游戏完善
  2. 使用Webpack打包Typescript ES6项目(转ES5)
  3. sql脚本自动完成数据库创建、切换、建表、数据初始化
  4. Android开发谈谈羊了个羊游戏爆火背后......
  5. Go入门(微软教程笔记)
  6. excel导入mysql命令行_将Excel数据导入MySql
  7. Linux环境使用ACE编辑器,Ace Editor 在线代码编辑器搭建
  8. 获取HEVC视频的ParameterSets
  9. 深入理解.sync修饰符
  10. 视频的格式也支持批量消音?一学就会