Map線程安全的四種實現方法


 Map 線程安全四種方法: 
1、使用 synchronized 關鍵字,代碼如下

synchronized(anObject) { 
  value = map.get(key);
}

2、使用 JDK1.5提供的鎖(java.util.concurrent.locks.Lock)

lock.lock(); 
value = map.get(key); 
lock.unlock();

 

3、使用 JDK1.5 提供的讀寫鎖(java.util.concurrent.locks.ReadWriteLock)

rwlock.readLock().lock(); 
value = map.get(key); 
rwlock.readLock().unlock(); 

4、使用 JDK1.5 提供的 java.util.concurrent.ConcurrentHashMap(並發哈希) 類。該類將 Map 的存儲空間分為若干塊,每塊擁有自己的鎖,減少了多個線程爭奪同一個鎖的情況。

Map<Long, String> conMap = new ConcurrentHashMap<Long, String>();

 

比較: 
1、不同步確實最快,與預期一致。 
2、四種同步方式中,ConcurrentHashMap 是最快的,接近不同步的情況。 
3、synchronized 關鍵字非常慢,比使用鎖慢了兩個數量級。如果需自己實現同步,則使用 JDK1.5 提供的鎖機制,避免使用 synchronized 關鍵字。


原文鏈接:https://blog.csdn.net/sswqzx/java/article/details/88954897


免責聲明!

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



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