吴杰栋 发表于 2014-7-28 10:39
楼主,你把if变成while试试,13行线程睡眠之后,由于if只会判断一次,那么之前进来的线程就不会去判断tick>0了, ...
Wokno 发表于 2014-7-28 09:59
问题出在你13行代码上,当一个线程卖出最后一张票后,其它三个处于睡眠状态的线程重新获取cpu执行权时,就 ...
尘埃落定 发表于 2014-7-28 10:57
Yes,你说的这种情况应该是没有加同步的状况,现第九行有加同步代码块,应该就能解决这个问题。
我现在的 ...
Wokno 发表于 2014-7-28 13:27
加入了同步代码块也是一样,因为每次线程sleep时,它会释放其持有的锁,其它线程就可以拿到锁。你把System ...
尘埃落定 发表于 2014-7-28 13:47
sleep的时候,其他线程应该拿不到锁的吧?我对同步的理解是:只要其中的一个线程进到同步中,如果没有出 ...
咸菜+萝卜干 发表于 2014-7-28 19:22
首先多个线程同步要有同一个锁,你的代码里,每一个线程的锁都是独立的,也就是说你锁了等于没锁,我帮你改 ...
尘埃落定 发表于 2014-7-28 21:37
o,因为new了两个对象,所以是两把锁。
咸菜+萝卜干 发表于 2014-7-28 22:41
现在知道了?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |