日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java多线程原子操作_Java 多线程 - 原子操作CAS

發布時間:2023/12/4 java 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java多线程原子操作_Java 多线程 - 原子操作CAS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是原子操作?如何實現原子操作?

假定有兩個操作?A?和?B,如果從執行?A?的線程來看,當另一個線程執行?B?時, 要么將?B?全部執行完,要么完全不執行?B,那么?A?和?B?對彼此來說是原子的。

實現原子操作可以使用鎖,鎖機制,滿足基本的需求是沒有問題的了,但是 有的時候我們的需求并非這么簡單,我們需要更有效,更加靈活的機制,?synchronized?關鍵字是基于阻塞的鎖機制,也就是說當一個線程擁有鎖的時候, 訪問同一資源的其它線程需要等待,直到該線程釋放鎖,這里會有些問題:首先,如果被阻塞的線程優先級很高很重要怎么辦?其次, 如果獲得鎖的線程一直不釋放鎖怎么辦?(這種情況是非常糟糕的)。還有一種 情況,如果有大量的線程來競爭資源,那?CPU?將會花費大量的時間和資源來處 理這些競爭,同時,還有可能出現一些例如死鎖之類的情況,最后,其實鎖機制 是一種比較粗糙,粒度比較大的機制,相對于像計數器這樣的需求有點兒過于笨 重。

實現原子操作還可以使用當前的處理器基本都支持?CAS()的指令,只不過每 個廠家所實現的算法并不一樣,每一個?CAS?操作過程都包含三個運算符:一個內 存地址?V,一個期望的值?A?和一個新值?B,操作的時候如果這個地址上存放的值 等于這個期望的值?A,則將地址上的值賦為新值?B,否則不做任何操作。

CAS?的基本思路就是,如果這個地址上的值和期望的值相等,則給其賦予新 值,否則不做任何事兒,但是要返回原值是多少。循環?CAS?就是在一個循環里不 斷的做?cas?操作,直到成功為止。

CAS?是怎么實現線程的安全呢?語言層面不做處理,我們將其交給硬件—?CPU?和內存,利用?CPU?的多處理能力,實現硬件層面的阻塞,再加上?volatile?變 量的特性即可實現基于原子操作的線程安全。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的java多线程原子操作_Java 多线程 - 原子操作CAS的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。