死锁的描述
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。
写一个死锁
先创建两个对象a、b,对应两个线程1、2。线程1先锁住a对象再锁住b对象,线程2先锁住b对象再锁a对象,为了死锁的发生各线程需要再两把锁直接等待一定时间,确保两个线程都能获取一把锁,而到获取第二把锁时就会相互等待,从而造成死锁情况。
private static Object a = new Object();
private static Object b = new Object();
public static void main(String[] args) {
// 线程1
new Thread(() -> {
synchronized (a) {
try {
Thread.sleep(1000);
synchronized (b) {
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
// 线程2
new Thread(() -> {
synchronized (b) {
try {
Thread.sleep(1000);
synchronized (a) {
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start(
);
}
本文介绍了死锁的概念,即多个进程因争夺资源而造成的一种互相等待的现象。通过一个具体的例子展示了如何在Java中创建一个死锁情况,涉及两个线程分别尝试按不同顺序获取两个对象的锁,导致双方都无法继续执行。
1220

被折叠的 条评论
为什么被折叠?



