2. 原子性 Atomic

對于涉及共享變量訪問的操作,若該操作從其執(zhí)行線程以外的任意線程來看是不可分割的,那么該操作就是原子操作,稱該操作具有原子性

實現(xiàn)原子性的兩種方式:

  1. 使用鎖(Lock)
  2. 利用CAS(Compare and Swap) 直接在硬件(處理器、內存)這一層次實現(xiàn),又被稱為“硬件鎖”

在Java中,對基礎數(shù)據(jù)類型(除double、long以外)的變量引用變量寫操作都是原子性

Java中的double、long類型變量會占用64位(8字節(jié))的存儲空間,32位的Java虛擬機對這種變量的寫操作可能會分解為兩個步驟實施,比如先寫低32位,后寫高32位,故不能保證原子性

Java中對任何變量的讀操作都是原子性的

Java語言規(guī)范特別地規(guī)定對于volatile關鍵字修飾的long/double類型變量的寫操作是具有原子性的

可以使用synchronized關鍵字來保證操作的原子性

原子操作 + 原子操作 != 原子操作

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容