線程鎖的機制Lock


java.util.concurrent.locks

接口Lock

publci interface Lock

  Lock 實現提供了比使用synchronized方法和語句可獲得的更加廣泛的鎖定操作,

此實現允許更靈活的結構,可以具有差別很大的屬性,可以、支持多個相關的Condition對象。

   鎖是多個線程對共享資源的訪問工具,通常,所提供了對共享資源的獨占訪問。

一次只可以有一個線程訪問共享資源,不過某些鎖提供對共資源的並發訪問,如:

ReadWriterLock的讀取鎖。

synchronized 方法或語句的使用提供了對與每個對象相關的隱式監視器鎖的訪問

但卻強制所有鎖獲取和釋放均要出現在一個塊結構中:當獲取了多個鎖時,

它們必須以相反的順序釋放,且必須在與所有鎖被獲取時相同的詞法范圍內釋放所有鎖。

 

 

 

 

 

 

 

 

//使用ThreadLocal類來管理共享資源

public class  ThreadLcoal<T> extends Object 

 該類提供了線程局部(thread-local)變量。這些變量不同與普通變量對應的物

因為訪問該個變量(通過其get或set方法)的每個線程都有自己的局部變量,

他獨立與變量初始化副本。ThreadLocal實例通常是類中的private static 字段

他們希望將狀態與某一線程(例如:用戶ID,事物ID)相關聯

 

 

 

相當於每個線程訪問這個縣城局部變量,就自動為每個線程復制一份獨立的副本,每個線程同過修改這個副本,

而不對其他線程訪問這個局部線程變量的影響。(各自維護自己的局部線程變量副本,

就像本例中每個客戶都想賬戶存100元,而賬戶初始100元,結果賬戶余額都是200元,說明線程只維護各自的副本)(總余額應為300元)

 

 

結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM