Java-线程死锁
基本介绍
- 多个线程都占用了对方的锁资源,且互不相让 ==> 导致死锁;
案例
class DeadLockDemo extends Thread{
static final Object object1 = new Object();
static final Object object2 = new Object();
boolean flag;
public DeadLockDemo(boolean flag){
this.flag = flag;
}
@Override
public void run() {
if(flag){
synchronized (object1){
System.out.println(Thread.currentThread().getName() + "进入1");
synchronized (object2){
System.out.println(Thread.currentThread().getName() + "进入2");
}
}
}
else {
synchronized (object2){
System.out.println(Thread.currentThread().getName() + "进入3");
synchronized (object1){
System.out.println(Thread.currentThread().getName() + "进入4");
}
}
}
}
}
public class Thread_DeadLock01 {
public static void main(String[] args) {
Thread deadLockDemo1 = new DeadLockDemo(true);
deadLockDemo1.setName("线程A");
deadLockDemo1.start();
Thread deadLockDemo2 = new DeadLockDemo(false);
deadLockDemo2.setName("线程B");
deadLockDemo2.start();
}
}