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: 2,278 · Posted: 2021-04-04
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...