黑马程序员技术交流社区

标题: 关于多线程买票小程序 [打印本页]

作者: amen0205    时间: 2013-3-6 21:48
标题: 关于多线程买票小程序
  1. class TicketDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Ticket t1=new Ticket();
  6.                 Ticket t2=new Ticket();
  7.                 Ticket t3=new Ticket();
  8.                 Ticket t4=new Ticket();
  9.                 t1.start();
  10.                 t2.start();
  11.                 t3.start();
  12.                 t4.start();

  13.                
  14.                 //System.out.println("Hello World!");
  15.         }
  16. }
  17. class Ticket extends Thread
  18. {
  19.         private static int ticket=100;//  注释1
  20.         public void run()
  21.         {
  22.                 while (true)
  23.                 {
  24.                         if(ticket>0)
  25.                                 System.out.println(Thread.currentThread().getName()+"....sale..."+ticket--);

  26.                 }
  27.                
  28.         }
  29. }
复制代码
毕老师视频里在多线程部分有个买票小程序,代码如上,问题:在注释1部分  这里加了静态后,整个程序运行OK   但毕老师说一般不用静态  就把这种方法毙掉了   是不是太牵强  ?
作者: HM李超    时间: 2013-3-6 22:32
一般说,静态随着类的加载而一直存在于内存中,
生命周期过长,这样会消耗系统资源,为了提高程序的效率,所以最好不用静态!
作者: 陈圳    时间: 2013-3-6 22:42
不是牵强,是本来就是多线程程序,创建的线程不止一个,一来是为了后续介绍实现Runnable接口实现多线程共享资源的好处,二来是静态这种方式,不适用.
你想啊,卖票,如果真是给火车站卖,那得多少张分类的票,多少个静态的变量.不是牵强,是实际.
作者: amen0205    时间: 2013-3-8 03:33
陈圳 发表于 2013-3-6 22:42
不是牵强,是本来就是多线程程序,创建的线程不止一个,一来是为了后续介绍实现Runnable接口实现多线程共享资 ...

我知道用Runnable接口来实现多线程更好一点  不过我感觉对一个小程序而言   定义一个静态对系统的消耗是可以忽略不计的  而且这里用了静态很OK  这种方法应该是可以的   当然对于现实问题  12306  花了5个亿都不行  咱这里不指望  呵呵




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