В 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(); } }
Комментариев нет:
Отправить комментарий