A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 公孙国禄 中级黑马   /  2016-3-27 00:04  /  898 人查看  /  9 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.ithei;

public class Demo03 {
        //定义多个线程共享的锁
        public static Object LOK01=new Object();
        public static Object LOK02= new Object();
   public static void main(String[] args) {
           Demo03thread thread01=new Demo03thread(true);
           Demo03thread thread02=new Demo03thread(false);
           thread01.start();
           thread02.start();
}
         package com.ithei;

public class Demo03thread extends Thread {
     boolean flag;

        public Demo03thread(boolean flag) {
       
                this.flag = flag;
        }

       
        @Override
        public void run() {
               
                if(flag){
                       
                        synchronized(Demo03.LOK01){
                                System.out.println("if(true)中的锁1");
                                try {
                                        this.sleep(300);
                                } catch (InterruptedException e) {
                                       
                                        e.printStackTrace();
                                }
//                       
                        synchronized(Demo03.LOK02){
                                System.out.println("if(true)中的锁2");
                        }
                        }
                }else{
                        synchronized (Demo03.LOK02) {
                                System.out.println("else(false)中的锁2");
                       
                        synchronized(Demo03.LOK01){
                                System.out.println("else(false)中的锁1");
                        }
                        }
                }
        }

}
}
一开始我把if(flag)里的flag写成了true 然后打印结果是                  
if(true)中的锁1
if(true)中的锁2
if(true)中的锁1
if(true)中的锁2

这明显不是死锁 当我把true写成flag时就没有问题啦
if(true)中的锁1
else(false)中的锁2
为什么?有什么区别吗?



9 个回复

倒序浏览
phoenix1992 来自手机 中级黑马 2016-3-27 00:13:14
沙发
学习学习,长经验
回复 使用道具 举报
没学过 ,感觉很高端的样子
回复 使用道具 举报
学习了!
回复 使用道具 举报
学习了!!!
回复 使用道具 举报
呦呦 ····!
回复 使用道具 举报
今天好像是看懂了,但敲不出代码来,不算懂吧?
回复 使用道具 举报
学习学习
回复 使用道具 举报
phoenix1992 来自手机 中级黑马 2016-3-27 22:27:30
9#
帅。。。
回复 使用道具 举报
1620698398 发表于 2016-3-27 00:43
今天好像是看懂了,但敲不出代码来,不算懂吧?

那得多练不过要小心 因为可能一不小心就会把文件夹无限复制啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马