黑马程序员技术交流社区

标题: 线程问题 [打印本页]

作者: Hi天天向上    时间: 2014-6-11 20:31
标题: 线程问题

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子类对象有什么区别呢 ??



作者: liujie445012100    时间: 2014-6-11 22:27
创建一个Thread对象把实现Runnable的子类加进入相当与启动一个线程执行一条,多个Thread放入同样的Runnable子类对象相当于多个线程做同样的事情,就像你写的卖票
作者: 锦宁    时间: 2014-6-14 10:18
一个Thread使用同一个Runnable子类对象就是4个线程共卖100张票,使用不同的Runable子类对象是每个线程都卖100张票!
作者: 华子    时间: 2014-6-14 10:21
使用同一个才是使用同一资源,不同自雷对象就不是同一资源了,也可以说使用不同的自雷对象,就有两个run方法,有200张票,




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