黑马程序员技术交流社区

标题: 多线程一个卖票的例子. [打印本页]

作者: 伍艳雄    时间: 2014-1-12 18:22
标题: 多线程一个卖票的例子.
本帖最后由 伍艳雄 于 2014-1-12 18:46 编辑
  1. public class Demo4_Thread {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 Ticket t1 = new Ticket();
  7.                 Ticket t2 = new Ticket();
  8.                 Ticket t3 = new Ticket();
  9.                 Ticket t4 = new Ticket();
  10.                
  11.                 t1.start();
  12.                 t2.start();
  13.                 t3.start();
  14.                 t4.start();
  15.         }

  16. }

  17. class Ticket extends Thread{
  18.         private static int ticket =100;  //为什么这里加上静态就只有一百张票了,一直没想明白...
  19.         public  void run(){
  20.                 while(ticket>0){
  21.                         System.out.println(Thread.currentThread().getName()+"sale :  "+ticket--);
  22.                 }
  23.         }
  24. }
复制代码



作者: 完美恋爱    时间: 2014-1-12 18:26
这有什么不明白的啊!那是毕老师自己定义的100张票而已嘛!
作者: ixiangfeng    时间: 2014-1-12 18:39
静态数据是共享的,无论你创建多少个对象都是一个数据, 你想想定义Person类时,把Country设为静态的,例如设为中国,然后无论你创建多少个人的对象,它的Country都是中国,因为这些人对象都是用的同一个Country
作者: 伍艳雄    时间: 2014-1-12 18:39
完美恋爱 发表于 2014-1-12 18:26
这有什么不明白的啊!那是毕老师自己定义的100张票而已嘛!

不加静态四个进程各100张...加了静态四个进程一共100张...我想知道static在这里的作用..
作者: 伍艳雄    时间: 2014-1-12 18:45
ixiangfeng 发表于 2014-1-12 18:39
静态数据是共享的,无论你创建多少个对象都是一个数据, 你想想定义Person类时,把Country设为静态的,例如 ...

哦,,懂了,,就是如果不加静态..每创建一个对象,那么ticket就会随着对象进入堆内存.四个对象就是四个ticket..加了静态.ticket就会类的加载进入方法区.四个对象共享一个ticket.......
谢谢..




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