Пакет java.util.concurrent.locks определяет два класса блокировок — ReentrantLock и ReentrantReadWriteLock. Последний удобен, когда есть много потоков, читающих структуру данных, и поменьше потоков — модифицирующих ее. В такой ситуации имеет смысл разрешить разделенный доступ читателям. Конечно, поток-писатель должен по-прежнему иметь исключительный доступ.
Купить программное обеспечение Москва недорого. Вот вам ссылка где сможете заказать любую программу. Все по самым доступным ценам.
Ниже описаны шаги, необходимые для использования блокировок чтения и записи.
- Сконструировать объект ReentrantReadWriteLock:private ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();
- Извлечь блокировки чтения и записи:
private Lock readLock = rwl.readLock();
private Lock writeLock = rwl.writeLock(); - Использовать блокировку чтения для всех читателей:
public double getTotalBalance()
{
readLock.lock();
try(…)
finally(readLock.unlock();}
} - Использовать блокировку записи для всех, кто изменяет данные:public void transfer(…)
{
writeLock.lock();
try(…)
finally { writeLock.unlock(); }
}