原子性,可見性,有序性

2021-10-23 15:51:22 字數 425 閱讀 5443

1. 原子性

- read, load, assign, use, store write 

- 基本型別的訪問,讀寫(long, double 非原子性協定)

- monitorenter, monitorexit (jvm) ; lock, unlock, synchronized

2. 可見性

- volatile

- synchronized (對乙個變數執行unlock操作之前,必須吧此變數同步回主記憶體中(store, write)

- final (在構造器中初始化完成後,並且構造器沒有把「this」的引用傳遞出去(避免半初始化狀態),其他執行緒可見;)

3. 有序性

- volatile(禁止指令重排)

- synchronize(持有同乙個鎖的兩個同步**塊只能序列地進行)

關於原子性, 可見性,有序性的思考

原子性是指 不會有中間狀態存在,要麼什麼都沒改變,要麼全都改變 對資料操作的原子性 在併發程式設計中,原子性存在的根本原因是,多個執行緒操作共享變數,由於執行緒間切換排程,導致乙個執行緒操作了另乙個執行緒 半成品 的資料,這是導致多執行緒環境下結果不可 的乙個原因.synchronized 的原子性...

volatile,可見性,有序性

1.可見性的實現基於volatile的讀取,寫入兩個操作的記憶體語義。2.有序性的實現基於jmm針對編譯器制定的volatile重排序表 能否重排序 第二個操作 第乙個操作 普通讀 寫 volatile讀 volatile寫 普通讀 寫 novolatile讀 nono novolatile寫 no...

可見性 原子性和有序性問題

核心矛盾 這些年,我們的 cpu 記憶體 i o 裝置都在不斷迭代,不斷朝著更快的方向努力。但是,在這個快速發展的過程中,有乙個核心矛盾一直存在,就是這三者的速度差異。我形象的描述了一下這三者的速度上的差異 所謂天上一天地上一年 愛因斯坦的相對論是有合理解釋的 cpu和記憶體之間的速度差異就是cpu...