本帖最后由 Fozei 于 2015-9-1 21:11 编辑
自学视频,看到了多线程那一部分了,模仿毕老师讲的卖票的小程序,大家请看:
- class TicketsSelling
- {
- public static void main(String[] args)
- {
- tickets s1=new tickets("win---1");
- tickets s2=new tickets("win---2");
- tickets s3=new tickets("win---3");
- tickets s4=new tickets("win---4");
- s1.start();
- s2.start();
- s3.start();
- s4.start();
- }
- }
- class tickets extends Thread
- {
- private static int ticket=100;//定义一个static的变量存储票的张数,表示这个变量是公用的,四个窗口都可以用
- private String win;
- tickets(String win)
- {
- super(win);//调用父类的构造函数给Thread起一个名字(面向对象没学扎实,理解的可能不对)
- }
- public void run()//覆盖run方法
- {
- //保持while(true)循环不停(保持唤醒——自己的理解),经过试验,如果没有这个无线循环语句,只能卖出前四张票;改成while(ticket>0)更好
- while(ticket>0)
- {
- if(ticket>0)//只要还有余票,就执行下面的语句,即:继续卖票
- System.out.println(Thread.currentThread().getName()+" sells ticket "+ticket--);
- }
-
- }
- }
复制代码 程序是可以运行的,也能实现需求功能。
我的疑问出现在这一句第32行:System.out.println(Thread.currentThread().getName()+" sells ticket "+ticket--);为什么把红字的部分,也就是“+“sells ticket””这部分内容删掉的话,程序运行结果就不一样了?删掉之后运行出来的些数字是怎么运行出来的???希望热心的朋友能够答疑解惑一下,不胜感激额。
|
|