スタックがベクトルを拡張する場合、それはスタックが同期化されていることを意味しますか?
Vector Java ドキュメントからのメモ
新しいコレクションの実装とは異なり、Vector は同期されます。
はい、同期されていますが、JavadocsDeque
によると、ではなく を優先する必要がありStack
ます。
Stack
Javadocから:
Deque インターフェイスとその実装によって、より完全で一貫性のある LIFO スタック操作のセットが提供されます。これは、このクラスより優先して使用する必要があります。例えば:
Deque<Integer> stack = new ArrayDeque<Integer>();
はい、Vectorから継承されたメソッドはStackで同期されたままです。独自のStackメソッドのピーク、ポップ、検索はStackで同期されます。Stack.pushメソッドとStack.emptyメソッドは同期されていませんが、
public boolean empty() {
return size() == 0;
}
public E push(E item) {
addElement(item);
return item;
}
どちらのメソッドもVectorの同期メソッドを呼び出しているため、Stack.emptyとStack.pushはスレッドセーフです。