黑马程序员技术交流社区

标题: 用实现Runnable接口的方式卖票,结果与预期不符合 [打印本页]

作者: vividou    时间: 2017-6-18 00:18
标题: 用实现Runnable接口的方式卖票,结果与预期不符合
请路过大神帮忙看一下,谢谢~
四个窗口同时售票的问题中,因为用static修饰符会使票数的生命周期很长,所以没有使用嘛。然后跟着老师走了遍用实现Runnable接口方式来完成,理论上不是应该四个窗口的总和是卖100张票吗?但我运行多次的结果都会出现两个以上的窗口卖第一张票,即100号。


未命名.JPG (87.79 KB, 下载次数: 27)

运行结果

运行结果

运行.JPG (98.84 KB, 下载次数: 30)

主要代码

主要代码

作者: javaeeheima    时间: 2017-6-18 07:58
加个锁

作者: MosLY    时间: 2017-6-18 08:13
线程不安全,

作者: 传说中的大帅比    时间: 2017-6-18 12:45
tickets没有静态修饰,所以每个线程都有自己的票而不是共享100张

作者: Hp_Yx    时间: 2017-6-18 18:36
第一要有同步,第二要加同步锁

作者: as2991    时间: 2017-6-22 17:59
synchronized( ThreadDemo2.class ) {
   while(true) {
......................

}
}




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