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速度最快
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


