Более полный и последовательный набор операций стека 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 являются потокобезопасными.