谈女朋友的方式记住java的Thread死锁

public class MakeGirlfriend implements Runnable{
    private int flag = 1;              //flag = 1,代表:1号帅哥。flag = 2,代表:2好帅哥
    static Object o1 = new Object(),o2 = new Object();
                                       //这里的意思是o1代表:1号美女,o2代表:2号美女
    @Override
    public void run() {                //导演准备的大房间,进行交谈交际测试的!
     System.out.println("flag="+flag); //看2位帅哥角色有没有 进入房间这个房间
        if(flag == 1){                 //如果是1号帅哥就进来
            synchronized(o1){          //如果1号帅哥先锁定1号美女的话,然后开始交往!
                try {
                    Thread.sleep(500);//那么就必须等半分钟才可以去锁定2号美女
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized(o2){     //如果1号帅哥把1号美女锁定后半分钟后,再来锁定2号美女那么
                    System.out.println("嘿嘿,1号美女跟2号美女都归我了,2个女朋友真爽啊!");
                }
            }
        }
       
        if(flag == 2){                   //如果是2号帅哥就进来
            synchronized(o2){          //如果2号帅哥先锁定2号美女的话,然后开始交往!
                try {
                    Thread.sleep(500); //那么就必须等半分钟才可以去锁定1号美女
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized(o1){     //如果2号帅哥把2号美女锁定后半分钟后,再来锁定1号美女那么
                    System.out.println("嘿嘿,1号美女跟2号美女都归我了,2个女朋友真爽啊!");
                }
            }
        }
    }
   
    public static void main(String[] args) {//【演播大厅】导演说:我们需要dk01,dk02 这样的2个角色
        MakeGirlfriend dk01 = new MakeGirlfriend();        //所以设计出了dk01角色
        MakeGirlfriend dk02 = new MakeGirlfriend();        //所以设计出了dk02角色
                                            //导演又说:需要2个演员来演这两个角色
                                            //员工说:找到演员了,他们分别是(男1号)跟(男2号)
                                            //导演说:让1号演dk01角色,让2号演dk02角色
        dk01.flag = 1;
        dk02.flag = 2;
        new Thread(dk01).start();            //角色dk01准备开工
        new Thread(dk02).start();            //角色dk02准备开工
    }
}
//到底是1号帅哥得到了2个美女还是2号帅哥得到了2个美女呢?
//哈哈,发现自己好坏!
//哈哈
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值