早在jdk的1.1版本中,所有的集合都是線程安全的。但是在1.2以及之后的版本中就出現了一些線程不安全的集合,為什么版本升級會出現一些線程不安全的集合呢?因為線程不安全的集合普遍比線程安全的集合效率高的多。隨着業務的發展,特別是在web應用中,為了提高用戶體驗減少用戶的等待時間,頁面響應速度(也就是效率)是優先考慮的。而且對線程不安全的集合加鎖以后也能達到安全的效果(但是效率會低,因為會有鎖的獲取以及等待)。其實在jdk源碼中相同效果的集合線程安全的比線程不安全的就多了一個同步機制,但是效率上卻低了不止一點點,因為效率低,所以已經不太建議使用了。下面舉一些常用的功能相同卻線程安全和不安全的集合。
Vector:就比Arraylist多了個同步化機制(線程安全)。
Hashtable:就比Hashmap多了個線程安全。
ConcurrentHashMap:是一種高效但是線程安全的集合。
Stack:棧,也是線程安全的,繼承於Vector。
