黑马程序员技术交流社区

标题: 有兴趣的过来试试,看看发生了什么(卖票测试) [打印本页]

作者: Fozei    时间: 2015-9-1 21:11
标题: 有兴趣的过来试试,看看发生了什么(卖票测试)
本帖最后由 Fozei 于 2015-9-1 21:11 编辑

自学视频,看到了多线程那一部分了,模仿毕老师讲的卖票的小程序,大家请看:
  1. class TicketsSelling
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 tickets s1=new tickets("win---1");
  6.                 tickets s2=new tickets("win---2");
  7.                 tickets s3=new tickets("win---3");
  8.                 tickets s4=new tickets("win---4");
  9.                 s1.start();
  10.                 s2.start();
  11.                 s3.start();
  12.                 s4.start();

  13.         }
  14. }


  15. class tickets extends Thread
  16. {
  17.         private static int ticket=100;//定义一个static的变量存储票的张数,表示这个变量是公用的,四个窗口都可以用
  18.         private String win;
  19.         tickets(String win)
  20.         {
  21.                 super(win);//调用父类的构造函数给Thread起一个名字(面向对象没学扎实,理解的可能不对)
  22.         }
  23.         public void run()//覆盖run方法
  24.         {
  25.                 //保持while(true)循环不停(保持唤醒——自己的理解),经过试验,如果没有这个无线循环语句,只能卖出前四张票;改成while(ticket>0)更好
  26.                 while(ticket>0)
  27.                 {
  28.                         if(ticket>0)//只要还有余票,就执行下面的语句,即:继续卖票
  29.                                 System.out.println(Thread.currentThread().getName()+"    sells ticket   "+ticket--);
  30.                 }
  31.         
  32.         }

  33. }
复制代码
程序是可以运行的,也能实现需求功能。
我的疑问出现在这一句第32行:System.out.println(Thread.currentThread().getName()+" sells ticket "+ticket--);为什么把红字的部分,也就是“+“sells ticket””这部分内容删掉的话,程序运行结果就不一样了?删掉之后运行出来的些数字是怎么运行出来的???希望热心的朋友能够答疑解惑一下,不胜感激额。




作者: Fozei    时间: 2015-9-2 08:18
自己回一个,防止沉底,大家快快看看。
作者: suichuan689    时间: 2015-9-2 08:50
“sells ticket”是字符串会原样输出的,你删掉的话它就不会输出了,但这并不影响程序的运行结果,之所以看起来程序的运行结果不一样,是因为Thread.currentThread().getName()获取的线程名称与余票数混合在了一起
作者: Fozei    时间: 2015-9-2 09:49
suichuan689 发表于 2015-9-2 08:50
“sells ticket”是字符串会原样输出的,你删掉的话它就不会输出了,但这并不影响程序的运行结果,之所以看 ...

啊,仔细看了一下我的输出结果,还真是跟你说的一样,谢谢了,非常感谢!





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