亚洲福利网站,国产精品久久国产三级国电话系列 ,欧美久久久久久,蜜桃av在线

IT培訓-高端面授IT培訓機構
云和教育:云和數據集團高端IT職業教育品牌
  • 國家級
    全民數字素養與技能培訓基地
  • 河南省
    第一批產教融合型企業建設培育單位
  • 鄭州市
    數字技能人才(碼農)培養評價聯盟
當前位置:
首頁IT問答正文

怎樣理解線程安全?volatile能解決嗎?

  • 發布時間:
    2023-02-11
  • 版權所有:
    云和教育
  • 分享:

線程安全是多線程領域的問題,線程安全可以簡單理解為一個方法或者一個實例可以在多線程環境中使用而不會出現問題,常見的線程安全需要考慮的問題如下:

原子性

原因:多線程下,不同線程的指令發生了交錯導致的共享變量的讀寫混亂。

解決:用悲觀鎖或樂觀鎖解決,volatile 并不能解決原子性。

可見性

原因:由于編譯器優化、或緩存優化、或 CPU 指令重排序優化導致的對共享變量所做的修改另外的線程看不到。

解決:用 volatile 修飾共享變量,能夠防止編譯器等優化發生,讓一個線程對共享變量的修改對另一個線程可見。

有序性

起因:由于編譯器優化、或緩存優化、或 CPU 指令重排序優化導致指令的實際執行順序與編寫順序不一致。

解決:用 volatile 修飾共享變量會在讀、寫共享變量時加入不同的屏障,阻止其他讀寫操作越過屏障,從而達到阻止重排序的效果。

注意:

volatile 變量寫加的屏障是阻止上方其它寫操作越過屏障排到 volatile 變量寫之下

volatile 變量讀加的屏障是阻止下方其它讀操作越過屏障排到volatile 變量讀之上

volatile 讀寫加入的屏障只能防止同一線程內的指令重排

主站蜘蛛池模板: 湟源县| 井冈山市| 高雄县| 旬阳县| 浦城县| 武定县| 得荣县| 仁布县| 鄄城县| 城固县| 西吉县| 关岭| 泉州市| 宜宾县| 巩留县| 芷江| 黔东| 绥芬河市| 益阳市| 祥云县| 渝北区| 松潘县| 绥阳县| 清涧县| 龙泉市| 阿瓦提县| 辽宁省| 峨眉山市| 神木县| 重庆市| 邹平县| 高陵县| 依安县| 济宁市| 彰化县| 台南市| 鄂托克旗| 平利县| 永宁县| 长春市| 伊金霍洛旗|