Java 中的死锁
Java juc 锁 About 1,059 words描述
线程A
先锁定DeadLock
字节码对象,在内部延迟1
秒,再锁定Object
字节码对象。
线程B
先锁定Object
字节码对象,在内部延迟1
秒,再锁定DeadLock
字节码对象。
此时会导致:线程A
等待线程B
释放Object.class
锁才能继续执行,而线程B
需要DeadLock.class
锁才能执行完毕,造成死锁。
代码
public class DeadLock {
public static void main(String[] args) {
new Thread(() -> {
synchronized (DeadLock.class) {
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (Object.class) {
System.out.println("Thread 1");
}
}
},"A").start();
new Thread(() -> {
synchronized (Object.class) {
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (DeadLock.class) {
System.out.println("Thread 2");
}
}
},"B").start();
}
}
Views: 1,701 · Posted: 2021-04-04
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...