Вы упомянули, что прочитали основы Thread, поэтому я предполагаю, что у вас есть многопоточное приложение, в котором есть несколько читателей и / или пишущих для набора.Вы можете использовать блокировку чтения-записи, чтобы ограничить доступ к коллекции.Когда данный метод выполняется, он блокирует блокировку чтения, которая позволяет другим читать, но не писать.Пока вы пишете с использованием метода putInSet
(или чего-то подобного) ниже, вы можете требовать блокировки записи для записи.Тогда набор не может быть записан, пока удерживается блокировка чтения.
private final Set<Object> mySet = new HashSet<Object>();
private final ReadWriteLock lock = new ReentrantReadWriteLock();
public void methodThatRunsAndAllowsReadOnly() {
lock.readLock().lock();
try {
// method body here
}
finally {
lock.readLock().unlock();
}
}
public void putInSet(Object o) {
lock.writeLock().lock();
try {
mySet.add(o);
}
finally {
lock.writeLock().unlock();
}
}