Подтвердить что ты не робот

Стек расширяет вектор

Если стеки расширяют вектор, это означает, что стеки синхронизированы?

Примечание от векторных документов Java

В отличие от новых реализаций коллекции синхронизируется вектор.

4b9b3361

Ответ 1

Да, он синхронизирован, но в соответствии с Javadocs вам следует предпочесть Deque вместо Stack.

Из Stack Javadocs:

Более полный и последовательный набор операций стека LIFO предоставляемые интерфейсом Deque и его реализациями, которые должны используется для этого класса. Например:

Deque<Integer> stack = new ArrayDeque<Integer>();

Ответ 2

Да, методы, унаследованные от Vector, остаются синхронизированными в Stack. Собственные методы стека заглядывают, поп, поиск синхронизируются в стеке. Методы Stack.push и Stack.empty не синхронизированы, но

public boolean empty() {
    return size() == 0;
}

public E push(E item) {
    addElement(item);
    return item;
}

оба метода вызывают векторные синхронизированные методы, поэтому Stack.empty и Stack.push являются потокобезопасными.