看一个经常出现的JAVA面试题:Arraylist与Vector的区别是什么?
首先我们给出标准答案:
1、Vector是线程安全的,ArrayList不是线程安全的。
2、ArrayList在底层数组不够用时在原来的基础上扩展0.5倍,Vector是扩展1倍。
和ArrayList和Vector一样,同样的类似关系的类还有HashMap和HashTable,StringBuilder和StringBuffer,后者是前者线程安全版本的实现。
在单线程环境中,线程安全的这些版本的效率都比不上线程不安全的版本,主要原因是大部分函数都加了关键词:synchronized
导致存在加锁和释放锁的过程,消耗较多时间。
参考文献: