黑马程序员技术交流社区

标题: 镶嵌循环的死锁到底可能和谐执行么??? [打印本页]

作者: 郑飞    时间: 2014-6-25 17:27
标题: 镶嵌循环的死锁到底可能和谐执行么???
本帖最后由 郑飞 于 2014-6-25 17:32 编辑

毕老师基础视频中的一个例子:
一直想,总觉得不可能有和谐的情况啊;就算有一两次和谐也应该在最开始时候.t1.t2开始运行时的先后时间差造成的
但是视频中,老师说这段代码有可能和谐运行 :dizzy:不明白
class Test implements Runnable
{
        private boolean flag = true;

        Test (boolean flag)//带标记的构造函数,方便传标记给线程,以便控制两个线程运行于两个不一样的同步块
        {
                this.flag = flag;
        }

        public void run()
        {
        while(true)    //然线程处于不断循环状态,好看结果
                {
                if(flag)   //线程1运行在这里面
                        {
                        synchronized(Suo.suo1)
                                {
                                System.out.println("线程1++++++++++外层");
                                synchronized(Suo.suo2)
                                        {
                                                System.out.println("线程1==========内层");
                                        }
                                }
                                
                        }
               
                else   //线程2运行在这里面
                        {
                        synchronized(Suo.suo2)
                                {
                                System.out.println("线程2:外层");
                                synchronized(Suo.suo1)
                                        {
                                                
                                                System.out.println("线程2内层");
                                        }
                                }
                        }
                }
        }

}

class Suo//建立锁的类,只是方便试验
{
        static Object suo1 = new Object();//锁1
        static Object suo2 = new Object();//锁2
}

class DeadLockTest
{        
        public static void main(String[] args)
        {
        //建立两个线程并运行
        Thread t1 = new Thread(new Test(true));
        Thread t2 = new Thread(new Test(false));
        t1.start();
        t2.start();
        }
}





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