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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Hi天天向上 中级黑马   /  2014-6-11 20:31  /  1407 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


class  Ticket implements Runnable
{
        private static int tick = 100;
        Object o = new Object();

        public void run()
        {
                while(true)
                {
                        synchronized(o)
                        {
                                if(tick>0)
                                {
                                        try{Thread.sleep(15);}catch(Exception e){}
                                        System.out.println(Thread.currentThread().getName()+"...tick..."+(tick--));
                                }
                        }
                }
        }
}

public class TicketSell2
{
        public static void main(String[] args)
        {
                Ticket t1 = new Ticket();
                Ticket t2 = new Ticket();
                Ticket t3 = new Ticket();
                Ticket t4 = new Ticket();

                Thread tt1 = new Thread(t1);
                Thread tt2 = new Thread(t2);
                Thread tt3 = new Thread(t3);
                Thread tt4 = new Thread(t4);

                tt1.start();
                tt2.start();
                tt3.start();
                tt4.start();
        }
}

*********************************************************************************

class  Ticket implements Runnable
{
        private static int tick = 100;
        Object o = new Object();

        public void run()
        {
                while(true)
                {
                        synchronized(o)
                        {
                                if(tick>0)
                                {
                                        try{Thread.sleep(15);}catch(Exception e){}
                                        System.out.println(Thread.currentThread().getName()+"...tick..."+(tick--));
                                }
                        }
                }
        }
}

public class TicketSell2
{
        public static void main(String[] args)
        {
                Ticket t1 = new Ticket();
               

                Thread tt1 = new Thread(t1);
                Thread tt2 = new Thread(t1);
                Thread tt3 = new Thread(t1);
                Thread tt4 = new Thread(t1);

                tt1.start();
                tt2.start();
                tt3.start();
                tt4.start();
        }
}

新建一个Thread使用同一个Runnable子类对象 和使用不同的Runable子类对象有什么区别呢 ??


评分

参与人数 1技术分 +1 收起 理由
天涯追梦 + 1

查看全部评分

3 个回复

正序浏览
使用同一个才是使用同一资源,不同自雷对象就不是同一资源了,也可以说使用不同的自雷对象,就有两个run方法,有200张票,
回复 使用道具 举报
一个Thread使用同一个Runnable子类对象就是4个线程共卖100张票,使用不同的Runable子类对象是每个线程都卖100张票!
回复 使用道具 举报
创建一个Thread对象把实现Runnable的子类加进入相当与启动一个线程执行一条,多个Thread放入同样的Runnable子类对象相当于多个线程做同样的事情,就像你写的卖票
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马