Синхронизированный доступ потоков к одному из полей класса
Как сделать так, чтобы разные потоки смогли обращаться к одному из полей класса синхронизовано? То есть, пока один поток в Vector добавляет элемент, другой поток не смог удалить элемент из этого vector`a, пока первый поток не завершит добавление. Спасибо заранее.
Ответы (1 шт):
Vector - синхронизированная коллекция.
И действительно, вот сигнатура метода add:
public synchronized boolean add(E e)
А вот сигнатура метода remove:
public synchronized E remove(int index)
Если же вы хотите, чтобы можно было синхронизировано обращаться и к другим переменным, то используйте такие объекты:
1) для примитивных типов это Atomic-объекты.
2) если используете непримитив, то убедитесь, что его методы изменения состояния и получения информации о нем извне синхронизированы.