11

スタックがベクトルを拡張する場合、それはスタックが同期化されていることを意味しますか?

Vector Java ドキュメントからのメモ

新しいコレクションの実装とは異なり、Vector は同期されます。

4

2 に答える 2

12

はい、同期されていますが、JavadocsDequeによると、ではなく を優先する必要がありStackます。

StackJavadocから:

Deque インターフェイスとその実装によって、より完全で一貫性のある LIFO スタック操作のセットが提供されます。これは、このクラスより優先して使用する必要があります。例えば:

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

于 2012-12-20T15:12:26.137 に答える
3

はい、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はスレッドセーフです。

于 2012-12-20T15:16:48.793 に答える