class DeadLock implements Runnable {
public int flag = 1;
static Object o1 = new Object(), o2 = new Object();
public void run() {
System.out.println("flag=" + flag);
if (flag == 1) {
synchronized (o1) {
try {
Thread.sleep(500);
} catch (Exception e) {
e.printStackTrace();
}
synchronized (o2) {
System.out.println("1");
}
}
}
if (flag == 0) {
synchronized (o2) {
try {
Thread.sleep(500);
} catch (Exception e) {
e.printStackTrace();
}
synchronized (o1) {
System.out.println("0");
}
}
}
}
public static void main(String[] args) {
DeadLock td1 = new DeadLock();
DeadLock td2 = new DeadLock();
td1.flag = 1;
td2.flag = 0;
new Thread(td1).start();
new Thread(td2).start();
}
}一个简单的死锁
最新推荐文章于 2025-05-09 23:29:16 发布
本文通过一个具体的Java示例代码展示了如何由于不当的同步控制而导致死锁现象的发生。该示例创建了两个线程,并分别设置了不同的锁获取顺序,最终导致两者互相等待对方释放锁而陷入死锁状态。
348

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



