課程
/后端開發
/Java
/細說多線程之Thread VS Runnable
出現這種情況是怎么回事?
窗口1賣了一張票,剩余票數為:3
窗口3賣了一張票,剩余票數為:2
窗口2賣了一張票,剩余票數為:3
窗口3賣了一張票,剩余票數為:0
2016-03-12
源自:細說多線程之Thread VS Runnable 2-3
正在回答
可能是因為并非窗口1首先獲得CPU時間片,而是其他線程。
首先是窗口2 ,執行到count--之后,sysout時就被阻塞了。注意此時count=4。
然后是窗口1 ,執行了整個run方法 ,此時count=3。
然后是窗口3 ,執行了整個run方法 ,此時count=2。
此時窗口2恢復,繼count--之后執行,輸出count=3。
然后是窗口3 ,執行了整個run方法 ,此時count=0。
微微shirly 提問者
正解,我的也出現這種
窗口2賣了1張票,剩余票數為:3
窗口1賣了1張票,剩余票數為:3
窗口3賣了1張票,剩余票數為:2
窗口1賣了1張票,剩余票數為:0
窗口2賣了1張票,剩余票數為:1
舉報
認識Thread和Runnable的區別,以及使用jstack生成線程快照
2 回答為什么票也是隨機出現相同的!
4 回答這個結果該如何分析呢?有兩個剩余票數為2
1 回答賣票的問題
4 回答出票剩余相同?
3 回答賣票線程問題
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-03-12
可能是因為并非窗口1首先獲得CPU時間片,而是其他線程。
首先是窗口2 ,執行到count--之后,sysout時就被阻塞了。注意此時count=4。
然后是窗口1 ,執行了整個run方法 ,此時count=3。
然后是窗口3 ,執行了整個run方法 ,此時count=2。
此時窗口2恢復,繼count--之后執行,輸出count=3。
然后是窗口3 ,執行了整個run方法 ,此時count=0。
當然這種并不一定是這樣,因為現在的多核CPU線程是可以同時執行的。2017-09-05
正解,我的也出現這種
窗口2賣了1張票,剩余票數為:3
窗口1賣了1張票,剩余票數為:3
窗口3賣了1張票,剩余票數為:2
窗口1賣了1張票,剩余票數為:0
窗口2賣了1張票,剩余票數為:1