要实现线程安全的 HashMap,可以考虑以下几种方法:
下面是使用读写锁实现线程安全的 HashMap 的示例代码:
JAVACopy code
import java.util.HashMap;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class SafeHashMap<K, V> {
private final HashMap<K, V> map = new HashMap<>();
private final ReadWriteLock lock = new ReentrantReadWriteLock();
public void put(K key, V value) {
lock.writeLock().lock();
try {
map.put(key, value);
} finally {
lock.writeLock().unlock();
}
}
public V get(K key) {
lock.readLock().lock();
try {
return map.get(key);
} finally {
lock.readLock().unlock();
}
}
// 其他方法同理
}
使用读写锁实现线程安全的 HashMap 虽然能够提高读取性能,但是写入操作仍然需要进行同步,在高并发写入场景下可能会影响性能。如果需要更高的并发性能,可以考虑使用 ConcurrentHashMap。