亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

打印出六條結果

窗口1賣出一張票,剩余票數為:4

窗口3賣出一張票,剩余票數為:3

窗口2賣出一張票,剩余票數為:4

窗口3賣出一張票,剩余票數為:1

窗口1賣出一張票,剩余票數為:2

窗口2賣出一張票,剩余票數為:0

這是什么情況?

正在回答

2 回答

http://img1.sycdn.imooc.com//578f7d380001767b09400506.jpg補充一個解決辦法

0 回復 有任何疑惑可以回復我~

這個是由于ticket--不是原子操作導致的,簡單點解釋就是當執行自減操作時在cpu內部是分了多個指令步驟執行的(假設步驟為1.先從內存讀取數據。2.將讀取的數據減一.3.返回數據)。此時你的執行結果就很明白了:程序一開始,窗口1獲取先cpu后執行到步驟1,此時又把控制權交到了窗口2,而且窗口2也剛好執行到步驟1.然后程序1繼續執行,從而數據錯誤。解決辦分兩種:1.將ticket的類型修改為AtomicInteger類型的。2.對票數做減法處理時加鎖。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

打印出六條結果

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號