В Java 5 ReentrantLock быстрее synchronized. В 6 по скорости одно и то же. Просто ReentrantLock предоставляет чуть больше возможностей, tryLock, lockInterruptibly, lock по таймауту и т.п
ReadWriteLock
Может быть удобен, когда есть много тредов, которые читают и всего несколько которые пишут. Ниже пример такого лока, хотя такой мэп всё равно проиграет ConcurentHashMap в производительности
private final ReentrantReadWriteLock readWriteLock = new ReentrantReadWriteLock();
private final Lock read = readWriteLock.readLock();
private final Lock write = readWriteLock.writeLock();
private Map<String, String> map = new HashMap<String, String>();
public void set(String key, String value) {
write.lock();
try {
map.put(key, value);
} finally {
write.unlock();
}
}
public String get(String key) {
read.lock();
try{
return dictionary.get(key);
} finally {
read.unlock();
}
}
Комментариев нет:
Отправить комментарий