前言:
使用 java 实现死锁。
public class DeadLock {
private Object localA = new Object();//创建需要被锁住的对象localA
private Object localB = new Object();//创建需要被锁住的对象localB
public void getA(){
synchronized (localA) {
try {
System.out.println(Thread.currentThread().getName() +" 已获得localA锁");
Thread.sleep(1000);//让线程睡眠是为了更好的模拟死锁发生的概率
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (localB) {
System.out.println("已经获得localA锁,正在竞争localB锁");
}
}
}
public void getB(){
synchronized (localB) {
try {
System.out.println(Thread.currentThread().getName() +" 已获得localB锁");
Thread.sleep(1000);//让线程睡眠是为了更好的模拟死锁发生的概率
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (localA) {
System.out.println("已经获得localB锁,正在竞争localA锁");
}
}
}
public static void main(String[] args) {
DeadLock lock = new DeadLock();
//开启线程1
new Thread(new Runnable() {
@Override
public void run() {
lock.getA();
}
},"thread1").start();
//开启线程2
new Thread(new Runnable() {
@Override
public void run() {
lock.getB();
}
},"thread2").start();
}
}