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

© 郑飞 高级黑马   /  2014-6-25 17:27  /  1125 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑飞 于 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();
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马