java代码如何使Map容器线程安全呢?


下文笔者讲述java代码使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 的存储空间分为若干块,每块拥有自己的锁,减少了多个线程争夺同一个锁的情况。代码如下 
value = map.get(key); //同步机制内置在 get 方法中
以上四种方式功能对比
   不使用锁的map,速度最快
   线程安全的方式中,ConcurrentHashMap速度最快

转自:http://www.java265.com/JavaJingYan/202204/16494717052805.html