java中活锁和死锁的区别_死锁、活锁、饿死和阻塞的个人理解
以下个人理解,请各位前辈多多指教:
死锁:
① 互斥条件:指进程对所分配到的资源进行排它性使用,在一段时间内某资源只由一个进程占用,如果此时还有其他进程请求资源,则请求者只能等待,直至占有资源的进程被释放。
② 请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。
③ 不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。
④环路等待条件:在发生死锁时,必然存在一个进程,资源的唤醒链,即进程集合{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中活锁和死锁的区别_死锁、活锁、饿死和阻塞的个人理解相关推荐
- 死锁、活锁、饿死和阻塞的个人理解
以下个人理解,请各位前辈多多指教: 死锁: ① 互斥条件:指进程对所分配到的资源进行排它性使用,在一段时间内某资源只由一个进程占用,如果此时还有其他进程请求资源,则请求者只能等待,直至占有资源的进程被 ...
- java中j 和 j啥区别_从字节码层次分析++j和j++的区别
一.缘起 最近看到个面试题: int j = 0; for(int i = 0; i <100; i++) j = j++; System.out.println(j); 输出结果是0,如果换成 ...
- java中aop和aoc的区别_法国AOC、AOP、VDP和IGP葡萄酒有什么区别?
原标题:法国AOC.AOP.VDP和IGP葡萄酒有什么区别? 对于大多数葡萄酒爱好者来说,AOC和波尔多都是同时认识的.很多人读不懂Bourgogne.Loire Valley或者Rhone Vall ...
- java中aop和aoc的区别_法国波尔多产区的葡萄酒AOC/AOP等级
2. AOC就是法国葡萄酒最高等级吗? 在法国葡萄酒分级中,一般分为四个大的等级:VDT.VDP.VDQS.AOC(新的法国分级是:VDF.IGP.VDQS.AOP,新旧标准将在较长时间内共存,所以大 ...
- Java implement意思_详解JAVA中implement和extends的区别
详解JAVA中implement和extends的区别 发布于 2020-4-14| 复制链接 摘记: 详解JAVA中implement和extends的区别extends是继承父类,只要那个类不是声 ...
- Java中notify和notifyAll的区别 - 何时以及如何使用
Java notify vs notifyAll notify和notifyAll方法之间有什么区别是棘手的Java问题之一! Condition 是个什么玩意? 提几个问题,从问题中去了解去学 ...
- java中的异常种类和区别以及处理机制和区别
java中的异常种类和区别以及处理机制和区别 按照异常需要处理的时机分为编译时异常(也叫强制性异常)也叫 CheckedException 和运行时异常(也叫非强制性异常)也叫 RuntimeExce ...
- java中ArrayList和LinkedList的区别
首先来看ArrayList和LinkedList的集成类和接口的区别.// lang java public class ArrayList<E> extends AbstractList ...
- java中Runnable和Callable的区别
文章目录 运行机制 返回值的不同 Exception处理 java中Runnable和Callable的区别 在java的多线程开发中Runnable一直以来都是多线程的核心,而Callable是ja ...
最新文章
- (拆点+最小路径覆盖) bzoj 2150
- Oracle Database 10g:删除表
- Linux命令(7):less命令
- 2012 Stackoverflow meetup at Shanghai PRC
- 前瞻:Java能否畅行未来?
- UNIX网络编程——sockatmark函数
- 万兆网卡实际吞吐量_案例探索 | 千兆/万兆网卡每秒转发包数处理能力上限到底有多大?...
- 行为设计模式 - 解释器设计模式
- environment variable is too large 2047
- Android Window/Window Z-Order/Surface/SurfaceView
- 高效记忆/形象记忆(05)110数字编码表 0-9
- xposed框架定位修改怎么用_硬核!教你三种方法,实现微信自定义修改地区!
- 母亲节是在每年五月份的第二个星期日,给定年份,求出当年母亲节的日期
- Golang-Beego(go mod)
- 分享111个HTML医疗保健模板,总有一款适合您
- 软件界面中一些易混淆/易用错的界面文案,以及一些约定俗成的文案约定
- android刘海屏高度适配,Android刘海屏的适配
- java 获取微信头像和昵称 生成图片
- 眼动数据分析(基于EyeLink眼动仪数据)
- Google收购摩托罗拉移动
热门文章
- 过拟合与模型调优(part2)--重抽样技术
- 走近分形与混沌(part13)--自然现象就其本质来说,是复杂而非线性的
- SPL - 写着简单跑得又快的数据库语言
- SAP Spartacus 支持 Vue 吗?
- SAP Cloud Application Programming 介绍(2021 更新版)
- Angular应用 vendor.js里的magic number 16384是什么含义
- 一个简单的例子学习 HTML 元素property和attribute的区别
- SAP Fiori OData取数据的同步模式和异步模式比较
- Java和ABAP里的外部类和内部类
- SAP UI5 Web Component不同React页面的跳转实现