java高并发编程讲解_有人看过 java高并发编程详解 汪文君著 这本书吗?
營業(yè)大廳叫號機程序,共享資源的問題
>static是類的屬性,存儲在類的那塊內存,每個線程操作的時候會讀取這個內存塊,甚至會加載到寄存器或高速緩存中,這樣自然不會保證其他線程對該值的可見性
1. 某個號碼被略過,沒有出現(xiàn)
并行的情況下(Thread1和Thread2運行在不同cpu上),static不能保證index的可見性,切換回Thread2之后,其值仍是66,那么66就打印出來了
并發(fā)的情況下(同一個cpu上運行Thread1和Thread2),切換回Thread2后,其值就會變?yōu)?8了
2. 某個號碼多次顯示
這種情況應該只是在并行的情況下出現(xiàn)
線程1執(zhí)行index+1 ,然后CPU 執(zhí)行權落入線程2 手里,由于線程1并沒有給index 賦予計算后的結果393 ,因此線程2 執(zhí)行index+1的結果仍然是393 ,而切換回Thread1,所以會出現(xiàn)重復號碼的情況。
3. 號碼超過了最大值500
這種情況下應該只是在并發(fā)的情況下發(fā)生
當index=499 的時候,線程1和線程2 都看到條件滿足,線程2 短暫停頓,線程1將index 增加到了500 ,線程2 恢復運行后又將500增加到了501 ,此時就出現(xiàn)了超過最大值的情況。
如果錯誤,請指正
總結
以上是生活随笔為你收集整理的java高并发编程讲解_有人看过 java高并发编程详解 汪文君著 这本书吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CS229 1 .线性回归与特征归一化(
- 下一篇: 联想蓝屏分析工具