微微shirly
2016-03-12 21:03
出现这种情况是怎么回事?
窗口1卖了一张票,剩余票数为:3
窗口3卖了一张票,剩余票数为:2
窗口2卖了一张票,剩余票数为:3
窗口3卖了一张票,剩余票数为:0
可能是因为并非窗口1首先获得CPU时间片,而是其他线程。
首先是窗口2 ,执行到count--之后,sysout时就被阻塞了。注意此时count=4。
然后是窗口1 ,执行了整个run方法 ,此时count=3。
然后是窗口3 ,执行了整个run方法 ,此时count=2。
此时窗口2恢复,继count--之后执行,输出count=3。
然后是窗口3 ,执行了整个run方法 ,此时count=0。
当然这种并不一定是这样,因为现在的多核CPU线程是可以同时执行的。正解,我的也出现这种
窗口2卖了1张票,剩余票数为:3
窗口1卖了1张票,剩余票数为:3
窗口3卖了1张票,剩余票数为:2
窗口1卖了1张票,剩余票数为:0
窗口2卖了1张票,剩余票数为:1
细说多线程之Thread VS Runnable
55327 学习 · 68 问题
相似问题