一。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.某一時刻只能有一個線程持有鎖,無論有多少個方法