JavaSE编程案例系列(8~100)——死锁现象,javase案例
分享于 点击 1921 次 点评:272
JavaSE编程案例系列(8~100)——死锁现象,javase案例
造成死锁现象的案例分析
在实际开发中要避免着中要避免这种死锁的问题。
public class LockA {
private LockA(){
}
public static final LockA lockA = new LockA();
}
- 创建锁B
public class LockB {
private LockB(){
}
public static final LockB lockB = new LockB();
}
- 实现死锁
public class DeathLock implements Runnable{
private int i = 0;
public void run(){
while(true){
if(i++ % 2 == 0){
synchronized (LockA.lockA) {
System.out.println("if ... locka");
synchronized (LockB.lockB) {
System.out.println("if....lockb");
}
}
}else {
synchronized (LockB.lockB) {
System.out.println("else...lockb");
synchronized (LockA.lockA) {
System.out.println("else...locka");
}
}
}
}
}
}
- 开启死锁
public class DeathLockDemo {
public static void main(String[] args) {
DeathLock dl = new DeathLock();
Thread t0 = new Thread(dl);
Thread t1 = new Thread(dl);
t0.start();
t1.start();
}
}
线程死锁的图解:
相关文章
- 暂无相关文章
用户点评