黑马程序员技术交流社区

标题: 关于多线程例子多窗口售票用static修饰 [打印本页]

作者: silentCat    时间: 2015-10-13 17:47
标题: 关于多线程例子多窗口售票用static修饰
票数使用static修饰的    (共20张);
第二十张票卖了两次;
是什么原因呀,如果改,怎么弄;
哪位大神指点一二
  1. public class TicketDemo {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 Ticket T1=new Ticket("T1");
  7.                 Ticket T2=new Ticket("T2");
  8.                 T1.start();
  9.                 T2.start();
  10.         }

  11. }

  12. class Ticket extends Thread{
  13.         private static int t=20;
  14.         public Ticket(String name){
  15.                 super(name);
  16.         }
  17.         public void run(){               
  18.                 while(true){
  19.                         if (t>0){
  20.                                 System.out.println(this.getName()+"  ticket----"+t);
  21.                                 t--;
  22.                         }
  23.                 }
  24.         }
  25.        
  26. }
复制代码

这个是打印结果




作者: 史世锋    时间: 2015-10-13 18:18
加同步呗   synchronized

作者: 王海中    时间: 2015-10-13 18:32
还没看到这呢,加油

作者: maxwell247    时间: 2015-10-13 22:52
多线程不加同步锁不行。线程是随机抢到cpu的。
作者: silentCat    时间: 2015-10-15 15:49
我如果只同步if语句还是出现两张20的票

s1.png (112.18 KB, 下载次数: 8)

s1.png

作者: fwqk123    时间: 2015-10-15 17:27
IF以后在套锁?》
作者: silentCat    时间: 2015-10-16 20:46
fwqk123 发表于 2015-10-15 17:27
IF以后在套锁?》

还是出现两张20 的票




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