JUC(線程高級)

一。volatile 關(guān)鍵字:當多個線程進行操作共享數(shù)據(jù)時??梢员WC內(nèi)存中數(shù)據(jù)的可見

? ? ? ? ? ? ? ? volatile相較于synchronized? 是一種輕量級的同步策略

? ? ? ? ? ? ? ? 注意事項:volatile ? 不具備 “互斥性”

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? volatile? 不能保證變量的? “原子性”

二。原子變量。jdk1.5以后java.util.concurrent.atomic 包下提供了常用的原子變量

? ? ? ? ? ? ? ? 1.volation ? 保證內(nèi)存可見性

? ? ? ? ? ? ? ? 2.CAS 算法保證了數(shù)據(jù)的原子性:

????????????????????????CAS算法是硬件對于并發(fā)操作共享數(shù)據(jù)的支持

????????????????????????????CAS包含了三個操作數(shù),1.內(nèi)存值V,2.預估值A(chǔ)。3更新值B,(當且僅當V==A時,V=B可以,否則什么都不做)

? ? 三。ConcurrentHasp同步容器類是java5增加的線程安全的哈希表,對多線程的操作,介于hashMap和Hashtable之間,

? ? ? ? ? ? 內(nèi)部采用了‘鎖分段’ 機制代理Hash的獨占鎖,進而提高性能

? ? 四。CountDownLatch,一個同步輔助類,在完成一組蒸菜其他線程中執(zhí)行的操作之前,它允許,一個或多個線程一直等待

? ? ? ? ? ? ? ? ? ? ? ? 閉鎖:在完成某些運算時,只有其它線程運算全部完成,當前運算才會進行

? ? 五。condition

? ? ? ? ? ? condition 接口是描述了可能會與鎖有管理的條件變量,這些變量在用法上,使用Object.wait 訪問的隱式監(jiān)聽器類似,但提供了更強大的功能,需要特別指出的是,單個lock可以與多個從condition對象管理,,condition方法的名稱與對應(yīng)的Object 版本中的不同,

? ? ? ? ? ? conditon中,notity ,wait, notifyAll方法對應(yīng)的分別是,single,await,singleAll

? ? ? ? ? ? condition 實例實質(zhì)上被綁定到一個鎖上,要為特定的Lock 實例獲的condition實例,請使用其newCondition方法。


? ? 六,ReaderWriteLock(樂觀鎖)

? ? ? ? ? ? ? ? ? ? “寫寫/讀寫 " ?? 需要互斥

? ? ? ? ? ? ? ? ? ? 讀讀之間不需要互斥

? ? 七。鎖的一些使用方法注意事項:

? ? ? ? ? ? ? ? ? ? 1.非靜態(tài)方法的鎖默認為this,靜態(tài)方法的鎖為對應(yīng)的class實例

? ? ? ? ? ? ? ? ? ? 2.某一時刻只能有一個線程持有鎖,無論有多少個方法

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容