死锁编码以及定位分析(笔记)
程序员文章站
2022-04-17 22:38:05
...
死锁含义:
死锁是指两个或两个以上的进程在执行过程中因争夺资源而造成的一种互相等待的现象。若无外力干涉,那它们都将无法推进下去,如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。
产生死锁的主要原因:
1.系统资源不足;2.进程推进的顺序不合适;3.资源分配不当;
package com.atguigu.springboot.executor;
import java.util.concurrent.TimeUnit;
class HoldLockThread implements Runnable{
//两个资源
private String lockA;
private String lockB;
public HoldLockThread(String lockA, String lockB) {
this.lockA = lockA;
this.lockB = lockB;
}
@Override
public void run() {
synchronized (lockA){
System.out.println(Thread.currentThread().getName()+"\t 自己持有:"+lockA+"\t尝试获得:"+lockB);
//暂停一下线程
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (lockB){
System.out.println(Thread.currentThread().getName()+"\t自己持有:"+lockB+"\t尝试持有:"+lockA);
}
}
}
}
public class DeadLockDemo {
public static void main(String[] args) {
String lockA="lockA";
String lockB="lockB";
new Thread(new HoldLockThread(lockA,lockB),"ThreadAAA").start();
new Thread(new HoldLockThread(lockB,lockA),"ThreadBBB").start();
}
}
笔记记录来源:尚硅谷
推荐阅读
-
笔记本风扇报错的原因分析以及解决方法
-
笔记本电脑不能开机以及开机没反应怎么办?故障分析以及解决方法
-
Spring ioc分析,以及编码实现
-
Hadoop学习笔记之初识MapReduce以及WordCount实例分析
-
笔记本风扇报错的原因分析以及解决方法
-
骁龙850笔记本性能揭秘及产品定位分析
-
笔记本电脑不能开机以及开机没反应怎么办?故障分析以及解决方法
-
java中死锁定位分析
-
Java面试——死锁编码及定位分析
-
【Tensorflow与深度学习笔记day07】5.2. ANN网络分析+Mnist手写数字识别+one-hot编码+SoftMax回归+损失计算-交叉熵损失+实现神经网络模型+模型正确率评估