黑马程序员技术交流社区

标题: 多线程买票的案例 [打印本页]

作者: 爱java爱生活    时间: 2015-6-4 18:24
标题: 多线程买票的案例

                  /**
                  * 第一种方式实现买票
                  * */
class Ticket extends Thread
{
        private  static int num=100; //static num实现所有成员共享票,假如有100张票吧;
        public void run() //100次循环卖完所有的票//因为票是共享的,所以4个对象共同卖完100张
        {
                                                        for(int i=0;i<=100;i++)
                                                        {
                                                                                if(num>0)
                                                                                        {
                                                                                                        System.out.println(currentThread().getName()+"..................."+num--);//输出当前的线程的名称+卖的第几张票
                                                                                        }
                                                                               
                                                        }
        }
}
                        public class Test2
                        {
                       
                               
                                                public static void main(String[] args)
                                                        {
                                                                        Ticket t1=new Ticket();//创建票对象
                                                                       
                                                                        Ticket t2=new Ticket();
                                                                        Ticket t3=new Ticket();
                                                                        Ticket t4=new Ticket();
                                                                        t1.start();
                                                                        t2.start();
                                                                        t3.start();
                                                                        t4.start();
                                                        }
                       
                        }


                       
                               /**
                               * 第二种方式实现买票
                               * implements Ruannable 接口的方式
                               *
                               * */
class Ticket2 implements Runnable
{
                         private int num=100;
                        public void run()
                        {
                                                                for(int i=0;i<100;i++)
                                                                {
                                                                        if(num>0)
                                                                        {
                                                       
                                                                                       System.out.println(Thread.currentThread().getName()+"......................................"+num--);
                                                                        }
                                                                }
                        }

}
public class Test2
                        {
               
                               
                                                public static void main(String[] args)
                                                        {
                                                                Ticket2 t=new Ticket2();
                                                                Thread t1=new Thread(t);//把线程任务封装在Ruannable 接口中,任务不变,只是创建多个Thread对象并把任务传进去,让Ruannable他们去卖;
                                                                Thread t2=new Thread(t);
                                                                Thread t3=new Thread(t);
                                                                Thread t4=new Thread(t);
                                                                t1.start();
                                                                t2.start();
                                                                t3.start();
                                                                t4.start();
                                                               
                                                        }
                       
                        }



作者: mmakun    时间: 2015-6-4 19:36
加个锁更好一点吧
作者: 绝版坏银    时间: 2015-6-4 19:50
同上。。。。。。。。。。
作者: 爱java爱生活    时间: 2015-6-4 21:00
嗯,是的啊,这只是初步实现,只是来演示线程同步的应用吧
作者: 小车车    时间: 2015-6-4 21:33
加个锁。。
作者: wang649557111    时间: 2015-6-4 21:59
新人略过。。。。。。。。。
作者: MissMr.    时间: 2015-6-4 22:24
感觉好厉害的样子




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