一個詭異的"可見性"問題
轉載自 一個詭異的"可見性"問題
之前介紹過可見性的特性,最近做測試的時候發現了一個很詭異的問題,下面看看這三個例子。
test1:
test1這個例子加了volatile,所以程式正確退出輸出test1 end
test2:
test2這個例子沒有加volatile,程式也正常退出並輸出一堆0並輸出了test2 end,這是為什麼呢?沒有加volatile為什麼也有可見性?看起來是很詭異的問題,問題是在while裡面加了一行System..輸出問題,開啟原始碼看println方法裡面加了synchronized同步塊,正是因為這個同步塊保證了裡面變數x的可見性,這個詭異的問題也就解開了。
test3:
test3這個例子即沒加volatile,也沒有在while裡面加System..輸出語句,所以執行緒對變數n3的修改對主執行緒不可見,程式一直迴圈,沒有輸出結果。
相關文章
- 解密詭異併發問題的幕後黑手:可見性問題解密
- 一個詭異的 Pulsar InterruptedException 異常Exception
- 一次詭異的MySQL問題處理故事MySql
- [20190116]詭異的問題2.txt
- 介面詭異的404問題記錄
- python 詭異問題求助各位大哥Python
- 一個詭異容器內的tcp_max_tw_buckets核心引數的問題TCP
- 關於 SAP ABAP gateway OData 的一個詭異問題及解決辦法Gateway
- 記錄一次詭異的拼接sql不生效問題SQL
- 串列埠使用Pipeline時詭異的ReadOnlySequence問題串列埠
- 一次詭異的Oracle使用者無法su問題Oracle
- 一個執行緒罷工的詭異事件執行緒事件
- 一個詭異的MySQL查詢超時問題,居然隱藏著存在了兩年的BUGMySql
- 記錄 openssl 證書驗證失敗的詭異問題
- 一次詭異的線上資料庫的死鎖問題排查過程資料庫
- MySQL update一個詭異現象的分析--個人未分析出MySql
- Volatile可見性分析(一)
- 專案升級到.Net8.0 Autofac引發詭異的問題
- Linux終端的8個詭異傢伙Linux
- 你知道Java是如何解決可見性和有序性問題的嗎?Java
- 常見的相容性問題
- 一個SMMU記憶體訪問異常的問題記憶體
- 生產環境一次詭異的空指標問題,竟然反轉了4次指標
- Java併發程式設計-解決可見性與有序性問題Java程式設計
- 詭異的”慢查詢“
- Java併發程式設計Bug源頭:可見性、原子性和有序性問題Java程式設計
- 記一次詭異的故障排查經歷
- 併發bug之源(一)-可見性
- 分散式架構中資料一致性常見的幾個問題分散式架構
- 10個最常見的JavaScript問題JavaScript
- grub常見的幾個問題
- 8 個出沒在 Linux 終端的詭異傢伙Linux
- 記一次詭異的Oracle查詢轉換Oracle
- Leetcode:單調棧_可見山峰問題LeetCode
- CUDA常見驅動程式相容性問題一覽
- volatile 可見性與原子性
- volatile,可見性,有序性
- C語言之詭異字串C語言字串