Вы можете использовать ReadWriteLock
для выполнения поточно-ориентированных операций чтения / записи для некоторого общего объекта:
import java.util.concurrent.locks.*;
public class Something {
private static SomeObject object = new SomeObject();
private static ReadWriteLock objectLock = new ReentrantReadWriteLock();
public void doSomething() {
objectLock.readLock().lock();
try {
//reading something from object
} finally {
objectLock.readLock().unlock();
}
objectLock.writeLock().lock();
try {
//writing something in object
} finally {
objectLock.writeLock().unlock();
}
}
}
Обратите внимание, что в этом примере, если значениеobject
переменная когда-либо изменяется (не сам объект), она должна быть объявлена с модификатором volatile
.