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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xmmsbb 中级黑马   /  2015-5-21 19:49  /  715 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Ticket implements Runnable
{
        private int num=100;
        Object obj=new Object();
    boolean flag=true;
        public void run()
        {
                if (flag)
                {
                        while (true)
                        {
                                synchronized(obj)
                                {
                                        if (num>0)
                                        {
                                                try
                                                {
                                                        Thread.sleep(10);
                                                }
                                                catch (InterruptedException e)
                                                {
                                                }
                                                System.out.println(Thread.currentThread().getName()+".....obj......."+num--);
                                        }
                                }
                        }
                }
                 else
                         while (true)
                         {
                                show();
                         }       
        }
        public synchronized void show()
        {
                if (num>0)
                                {
                                        try
                                        {
                                                Thread.sleep(10);
                                        }
                                        catch (InterruptedException e)
                                        {
                                        }
                                        System.out.println(Thread.currentThread().getName()+".....syn......."+num--);
                                }
        }
}
class  SynLockDemo
{
        public static void main(String[] args)
        {
                Ticket t=new Ticket();
                Thread t1=new Thread(t);
                Thread t2=new Thread(t);
                t1.start();
                t.flag=false;
                t2.start();
        }
}
为什么运行结果是(部分)
Thread-0.....syn.......14
Thread-0.....syn.......13
Thread-0.....syn.......12
Thread-0.....syn.......11
Thread-0.....syn.......10
Thread-0.....syn.......9
Thread-0.....syn.......8
Thread-0.....syn.......7
Thread-0.....syn.......6
Thread-0.....syn.......5
Thread-0.....syn.......4
Thread-0.....syn.......3
Thread-0.....syn.......2
Thread-0.....syn.......1

只有syn的没有obj的?

0 个回复

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