黑马程序员技术交流社区

标题: 多线程死锁是问题 [打印本页]

作者: 公孙国禄    时间: 2016-3-27 00:04
标题: 多线程死锁是问题
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
为什么?有什么区别吗?




作者: phoenix1992    时间: 2016-3-27 00:13
学习学习,长经验
作者: 唯爱唐嫣    时间: 2016-3-27 00:16
没学过 ,感觉很高端的样子
作者: lipy1993    时间: 2016-3-27 00:20
学习了!
作者: yi651312197    时间: 2016-3-27 00:23
学习了!!!
作者: 赵国政    时间: 2016-3-27 00:32
呦呦 ····!
作者: 1620698398    时间: 2016-3-27 00:43
今天好像是看懂了,但敲不出代码来,不算懂吧?
作者: 丿若恋灬如初    时间: 2016-3-27 00:56
学习学习
作者: phoenix1992    时间: 2016-3-27 22:27
帅。。。
作者: 公孙国禄    时间: 2016-3-27 22:30
1620698398 发表于 2016-3-27 00:43
今天好像是看懂了,但敲不出代码来,不算懂吧?

那得多练不过要小心 因为可能一不小心就会把文件夹无限复制啦




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2