Синхронизированный доступ потоков к одному из полей класса

Как сделать так, чтобы разные потоки смогли обращаться к одному из полей класса синхронизовано? То есть, пока один поток в Vector добавляет элемент, другой поток не смог удалить элемент из этого vector`a, пока первый поток не завершит добавление. Спасибо заранее.


Ответы (1 шт):

Автор решения: Miron

Vector - синхронизированная коллекция.
И действительно, вот сигнатура метода add:

public synchronized boolean add(E e)

А вот сигнатура метода remove:

public synchronized E remove(int index)  

Если же вы хотите, чтобы можно было синхронизировано обращаться и к другим переменным, то используйте такие объекты:
1) для примитивных типов это Atomic-объекты.
2) если используете непримитив, то убедитесь, что его методы изменения состояния и получения информации о нем извне синхронизированы.

→ Ссылка