如果堆栈扩展向量,那意味着堆栈是同步的吗?
Vector Java docs的注释
与新的集合实现不同,Vector是同步的。
如果堆栈扩展向量,那意味着堆栈是同步的吗?
Vector Java docs的注释
与新的集合实现不同,Vector是同步的。
是的,它是同步的,但根据 的Javadoc 你应该更喜欢 Deque
代替 Stack
。
来自 Stack
的Javadoc:
一套更完整,更一致的LIFO堆栈操作 由Deque接口及其实现提供,应该 优先使用这个类。例如:
Deque<Integer> stack = new ArrayDeque<Integer>();
是的,它是同步的,但根据 的Javadoc 你应该更喜欢 Deque
代替 Stack
。
来自 Stack
的Javadoc:
一套更完整,更一致的LIFO堆栈操作 由Deque接口及其实现提供,应该 优先使用这个类。例如:
Deque<Integer> stack = new ArrayDeque<Integer>();
是的,从Vector继承的方法在Stack中保持同步。自己的堆栈方法peek,pop,search在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是线程安全的。