没有合适的资源?快使用搜索试试~ 我知道了~
什么是死锁,如何避免死锁?Java死锁详解
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
2 下载量 75 浏览量
2020-12-20
15:54:03
上传
评论
收藏 141KB PDF 举报
温馨提示
试读
1页
什么是死锁 死锁是指多个进程因竞争资源而引起的一种僵局,如果没有外力作用,所有进程都不会向前推进。 举例:假如有线程Thread1和Thread2,两个都要访问共享资源AB,Thread1和Thread2一个先访问A再访问B,另一个先访问B再访问A。但在他们线程未执行完时,都不会释放AB资源,那么就形成了一种僵局,Thread1在等待Thead2施放B资源,Thread2在等待Thread1释放A资源,两个进程就形成了一种僵局,下面以Java代码实现为例说明: public class DeadThread { private Thread thread1; public D
资源推荐
资源详情
资源评论
什么是死锁,如何避免死锁?什么是死锁,如何避免死锁?Java死锁详解死锁详解
什么是死锁什么是死锁
死锁是指多个进程因竞争资源而引起的一种僵局,如果没有外力作用,所有进程都不会向前推进。死锁是指多个进程因竞争资源而引起的一种僵局,如果没有外力作用,所有进程都不会向前推进。
举例:假如有线程Thread1和Thread2,两个都要访问共享资源AB,Thread1和Thread2一个先访问A再访问B,另一个先访问B再访问A。但在他们线程未执行完时,都不会释放AB资
源,那么就形成了一种僵局,Thread1在等待Thead2施放B资源,Thread2在等待Thread1释放A资源,两个进程就形成了一种僵局,下面以Java代码实现为例说明:
public class DeadThread {
private Thread thread1;
public DeadThread(Object object1,Object object2){
thread1 = new Thread(() -> {
synchronized (object1){
System.out.println("获取到o1"+Thread.currentThread().getName());
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (object2){
System.out.println("获取到o2"+Thread.currentThread().getName());
}
}
});
thread1.start();
}
public static void main(String[] args) {
Object object1=new Object();
Object object2=new Object();
DeadThread deadThread=new DeadThread(object1,object2);
DeadThread deadThread1=new DeadThread(object2,object1);
}
}
其中Object1和Object2就是上述的资源AB。
死锁产生的必要条件死锁产生的必要条件
互斥条件:资源互斥访问。一个资源每次只能被一个进程使用,即在一段时间内某 资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待。
请求保持:进程已经拥有了资源,又请求资源。进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源 已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资
源保持不放。
不可剥夺:进程拥有的资源不会被剥夺,只能自己主动释放。进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能 由获得该资源的进程自己来释放(只能是主动
释放)。
循环等待: 进程之间形成了一个循环等待资源的环。若干进程间形成首尾相接循环等待资源的关系。
死锁产生的原因
死锁产生的原因死锁产生的原因
进程推进顺序非法。
进程竞争资源。
Java中怎么监测死锁中怎么监测死锁
还是以上述程序为例:可以看到这两个线程都处于blocked状态
用idea自带的debug功能
原创文章 18获赞 0访问量 828
关注
私信
展开阅读全文
作者:会飞的瓜牛
资源评论
weixin_38725137
- 粉丝: 3
- 资源: 925
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功