基本介绍
多个线程都占用了对方的锁资源、但不肯想让、导致了死锁、再编程上一定要避免死锁的发生。
死锁demo
public class DeadLock {
public static void main(String[] args) {
// 模拟死锁
DeadLockDemo deadLockDemo1 = new DeadLockDemo(true);
DeadLockDemo deadLockDemo2 = new DeadLockDemo(false);
deadLockDemo1.start();
deadLockDemo2.start();
}
}
class DeadLockDemo extends Thread{
static Object o1 = new Object();
static Object o2 = new Object();
boolean flag;
public DeadLockDemo(Boolean flag){
this.flag=flag;
}
@Override
public void run() {
if(flag){
synchronized (o1){
System.out.println(Thread.currentThread().getName()+"进入1");
synchronized (o2){
System.out.println(Thread.currentThread().getName()+"进入2");
}
}
}else {
synchronized (o2){
System.out.println(Thread.currentThread().getName()+"进入3");
synchronized (o1){
System.out.println(Thread.currentThread().getName()+"进入4");
}
}
}
}
}
结果

网友评论