Вам действительно нужно классифицировать тип безопасности потоков Java в векторе Java. Javas Vector безопасно использовать из нескольких потоков, поскольку он использует синхронизацию методов. Государство не будет повреждено.
Однако полезность вектора Java ограничена несколькими потоками без дополнительной синхронизации. Например, рассмотрим простой акт чтения элемента из вектора
Vector vector = getVector();
if ( vector.size() > 0 ) {
object first = vector.get(0);
}
Этот метод не портит состояние вектора, но он также неверен. Ничто не мешает другому потоку мутировать вектор между оператором if и вызовом get (). Этот код может и будет в конечном итоге потерпеть неудачу из-за состояния гонки.
Этот тип синхронизации полезен только в некоторых сценариях и, конечно, не дешев. Вы платите заметную цену за синхронизацию, даже если вы не используете несколько потоков.
.Net решил не платить эту цену по умолчанию для сценария только ограниченной полезности. Вместо этого он решил реализовать список без блокировки. Авторы несут ответственность за добавление любой синхронизации. Это ближе к модели C ++ «плати только за то, что используешь»
Недавно я написал пару статей об опасности использования коллекций только с внутренней синхронизацией, такой как вектор Java.
Ссылка Вектор безопасности потока: http://www.ibm.com/developerworks/java/library/j-jtp09263.html