как работает Vector java

Всем привет) интересно узнать, почему класс Vector в java потокобезопасен. Документация делает акцент на том что он динамичный, но все же это не совсем то, что нужно. Заглянув в исходники, заметила, что некоторые методы помечены synchronized, значит ли это что только один поток имеет доступ к содержимому коллекции?


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

Автор решения: Ivan Tropin

Да, Vector потокобезопасен именно потому, что у него все методы synchronized. Для многопоточки лучше юзать СopyOnWriteArrayList.

→ Ссылка
Автор решения: pazukdev
  • Да, только 1 поток имеет доступ единовременно. Методы имеют блоки синхронизированные по this, т.е. блокируется целиком вся коллекция.
  • Vector - это старый аналог ArrayList'а. Оба экстендят AbstractList. Vector отличается упомянутой синхронизированностью и размером увеличения внутреннего массива (в ArrayList он увеличивается в 1,5 раза, в Vector в 2 раза). Также стоит упомянуть, что Stack экстендит именно Vector.
  • В целом у нас нет причин когда-либо использовать Vector.
→ Ссылка