真正的原子是什麼?因爲我必須選擇一些語言來更清晰地構建我的問題,所以我會選擇Java。我知道,原子意味着做所有事情,或者只是回滾/無所事事。所以說,我有以下原子是什麼?
public class Myclass {
private boolean progress;
public void setProgress(boolean progress) {
this.progress = progress;
}
public boolean getProgress() {
return progress;
}
}
現在以下哪些是線程安全的或原子或兩者兼而有之?請把每一個新行作爲一個單獨的代碼
-------------------
getProgress(); //
------------------
----------------------
setProgress(true); //
----------------------
-------------------
getProgress()
setProgress();
-------------------
--------------------
setProgress();
getProgress();
--------------------
哪些這些情況下將有意義在java中使用AtomicReference?
由於'progress'不是'volatile',因此該類不是線程安全的。完成後,該類應該是線程安全的。 – Turing85
至於原子操作:[關於原子訪問的Oracle教程](https://docs.oracle.com/javase/tutorial/essential/concurrency/atomic.html)恰恰定義了兩個原子操作:讀取和寫入任何原語字段和引用字段,除了'long'和'double',以及'volatile'字段上的讀取和寫入。 – Turing85
@ Turing85,'AtomicXxxxxxx'類除了這兩個之外還有一些額外的原子操作。例如,'atomic.compareAndSet(expected,new)'測試變量是否等於'expected',如果是,則將它設置爲'new',全部在一個原子步驟中。 –