java面试题之什么是死锁、活锁、饿死和竞态条件?
2024-09-08 13:43:39
- 死锁:是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力作用,他们将无法推进下去;
- 活锁:是指两个线程优先级相同,都礼让不走,就这样一直僵持下去;
- 饿死:在单线程情况下,A、B两个线程,A先执行;A在执行过程中,C线程来了,B让C先执行;C在执行过程中,D线程来了,B也让D先执行,就这样B一直都是等待状态。
- 竞态条件:多个线程竞争同一个变量,导致数据的不正确性,线程的访问顺序是不可控的,会影响最终的结果。
产生死锁的必要条件:
1、互斥使用(资源独占)
一个资源每次只能给一个进程使用(比如写操作)
2、占有且等待:
进程在申请新的资源的同时,保持对原有资源的占有
3、不可抢占:
资源申请者不能强行从资源占有者手动夺取资源,资源只能由占有者自愿释放
4、循环等待:
A等待B占有的资源,B等待C占有的资源,C等待D占有的资源,..........N等待A的资源,形成一个线程等待回路
最新文章
- Spring+SpringMVC+Mybatis大整合(SpringMVC采用REST风格、mybatis采用Mapper代理)
- jquery添加光棒效果的各种方式以及简单动画复杂动画
- Bomb---hdu5934(连通图 缩点)
- 寻找C语言和.NET之间的桥梁
- 最新版ffmpeg源码分析
- C#中往数据库插入/更新时候关于NUll空值的处理
- WPF打印原理,自定义打印
- VS中两个常用辅助工具
- Antelope 和Barracuda区别
- (转)TCP三次握手
- jquery 银行卡号验证
- WebApi 文件上传
- 建立TCP连接的三次握手
- 关于Python深浅拷贝
- 《软件工程》小组团队项目-小学生四则运算APP(First Sprint)
- 下拉框combobox用法&;级联餐单
- Django 导入css文件,样式不起作用。Resource interpreted as Stylesheet but transferred with MIME type application/x-css
- java反射知识点总结
- UICollectionViewFlowLayout 的 estimatedItemSize 属性
- c# webBrowser清除缓存问题