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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© amen0205 中级黑马   /  2013-3-6 21:48  /  1088 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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   但毕老师说一般不用静态  就把这种方法毙掉了   是不是太牵强  ?

3 个回复

倒序浏览
一般说,静态随着类的加载而一直存在于内存中,
生命周期过长,这样会消耗系统资源,为了提高程序的效率,所以最好不用静态!
回复 使用道具 举报
不是牵强,是本来就是多线程程序,创建的线程不止一个,一来是为了后续介绍实现Runnable接口实现多线程共享资源的好处,二来是静态这种方式,不适用.
你想啊,卖票,如果真是给火车站卖,那得多少张分类的票,多少个静态的变量.不是牵强,是实际.
回复 使用道具 举报
陈圳 发表于 2013-3-6 22:42
不是牵强,是本来就是多线程程序,创建的线程不止一个,一来是为了后续介绍实现Runnable接口实现多线程共享资 ...

我知道用Runnable接口来实现多线程更好一点  不过我感觉对一个小程序而言   定义一个静态对系统的消耗是可以忽略不计的  而且这里用了静态很OK  这种方法应该是可以的   当然对于现实问题  12306  花了5个亿都不行  咱这里不指望  呵呵
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马