public static void main(String[] args) {
// 第一代, Vector Hashtable 線程安全(同步方法)效率低下
Vector v;
// 第二代 ArrayList、HashMap、HashSet 線程不安全,效率高
ArrayList list = new ArrayList();
// 安全第一,不能要效率不要安全,如果涉及線程安全,怎麼辦
List list2 = Collections.synchronizedList(list);
// 第三代 Lock鎖 併發請求越來越多,併發集合類應運而生 線程安全 性能還高
// 性能提高:JDK7:1 Lock鎖 2 分段(segment)鎖而不是鎖全部
// 性能提高:JDK8:1 Lock鎖 2 採用了比分段鎖定效率更高,但是也更復雜的方式
ConcurrentHashMap<String, String> ccmap = new ConcurrentHashMap<String, String>();
// Lock鎖,CopeOnWrite 讀不加鎖,寫的時候另外複製數據,適合讀操作多, 不能保證數據的實時一致。
CopyOnWriteArrayList<Integer> cowList = new CopyOnWriteArrayList<Integer>();
// 底層不是Map 而是CopyOnWriteArrayList 裝飾模式。
// list有序,set無序
CopyOnWriteArraySet<Integer> cowSet = new CopyOnWriteArraySet<Integer>();
}
附:
List : 有序可重
Set : 無序不可重
有序或無序是指是否按照其添加的順序來存儲對象。List 是按照元素的添加順序來存儲的。而 Set 的實現類都有一套自己的排序算法,每添加一個元素,都會按照其內部算法將元素添加到合適的位置,所以不能保證內部存儲是按元素添加的順序而存儲的。