package com.qianfeng.demo02;
/**
* 同步的另外一个弊端:死锁
*
* 最常见的死锁的情况:
* 同步嵌套,同步中还有同步,然后两个同步用的不是一把锁。
*
* 不是使用死锁,而是避免死锁。
*
* 尽量避免同步嵌套的情况。
* */
public class DeadLockDemo01 {
public static void main(String[] args) {
SaleTicket st = new SaleTicket();
Thread t0 = new Thread(st);
Thread t1 = new Thread(st);
t0.start();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
st.setFlag(false);
t1.start();
}
}
class SaleTicket implements Runnable{
private int num = 100;
Object obj = new Object();
private boolean flag = true;
public void setFlag(boolean flag) {
this.flag = flag;
}
public boolean isFlag() {
return flag;
}
@Override
public void run() {
if (flag) {
while (true) {
synchronized (obj) {
show();
}
}
}else {
while (true) {
show(); //出现同步的嵌套,可能会产生死锁
}
}
}
pub
多线程——同步嵌套造成死锁问题
最新推荐文章于 2024-05-29 16:48:18 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)