看一個經常出現的JAVA面試題:Arraylist與Vector的區別是什麼?
首先我們給出標準答案:
1、Vector是線程安全的,ArrayList不是線程安全的。
2、ArrayList在底層數組不夠用時在原來的基礎上擴展0.5倍,Vector是擴展1倍。
和ArrayList和Vector一樣,同樣的類似關係的類還有HashMap和HashTable,StringBuilder和StringBuffer,後者是前者線程安全版本的實現。
在單線程環境中,線程安全的這些版本的效率都比不上線程不安全的版本,主要原因是大部分函數都加了關鍵詞:synchronized
導致存在加鎖和釋放鎖的過程,消耗較多時間。
參考文獻: