死锁的产生

多线程里面,大家一定不会忘记有死锁这个概念。大家都知道,死锁就是2个线程,互相等待对方的资源,一直不能往下执行。下面我用简单的用java代码写一个死锁。

public class Main{
    private Object o1 = new Object(), 02 = new Object();
    public static void main(String [] args){
        Main m = new Main();
        new Thread(){
            public void run(){
                synchroized(m.o1){
                    synchroized(m.o2){              System.out.println(Thread.getCurrentName());
                    }
                }
            }
        }.start();
        new Thread(){
            synchroized(m.o2){
                    synchroized(m.o1){              System.out.println(Thread.getCurrentName());
                    }
            }
        }.start();
    }
}

解决死锁的方案就是要执行顺序不出现互相等待的情况,出现了这种情况需要你让我退这种。就好像一条只能容一辆车过路的桥,如果两辆完全方向相反的车,是不是势必就有一辆需要退出一条道让他先过呢,道理是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值