目錄
- 一、同步容器
- 1、Vector——>ArrayList
- 2、Hashtable——>HashMap
- 3、Collections集合中——>synchronizedXXX
- 二、并發容器
- 1、CopyOnWriteArrayList
- 2、ConcurrentLinkedQueue
- 2、ConcurrentHashMap
一、同步容器
1、Vector——>ArrayList
- vector 是執行緒(Thread)同步(Synchronized)的,所以它也是執行緒安全的;
- Arraylist是執行緒異步(ASynchronized)的,是不安全的;


2、Hashtable——>HashMap
- Hashtable是synchronized,這意味著Hashtable是執行緒安全的,多個執行緒可以共享一個Hashtable;
- HashMap是非synchronized,這意味著HashMap是非執行緒安全的;


3、Collections集合中——>synchronizedXXX
ArrayList<Object> list = new ArrayList<>();
Collections.synchronizedList(list);
HashMap<Object, Object> map = new HashMap<>();
Collections.synchronizedMap(map);
Set<Object> set = new HashSet<>();
Collections.synchronizedSet(set);
- 以synchronizedList為例:synchronizedList回傳了SynchronizedList<>(list)),SynchronizedList又是一個內部靜態類,該內部靜態類中的add()、set()、get()等方法都在方法內部添加了synchronized關鍵字,如下圖:


二、并發容器
1、CopyOnWriteArrayList
- 寫操作高效率并發并且是執行緒安全的;
- 讀操作無鎖的ArrayList;
- 具體可參考lz此博文鏈接: https://wwwxz.blog.csdn.net/article/details/117675193
2、ConcurrentLinkedQueue
- ConcurrentLinkedQueue是基于鏈接節點的無界執行緒安全佇列 , 這個佇列排列元素FIFO(先進先出)
- ConcurrentLinkedQueue使用回圈CAS演算法實作執行緒安全的佇列,這種方式實作佇列稱之為非阻塞佇列;而ConcurrentLinkedQueue就是一種非阻塞佇列,
- 具體可參考lz此博文鏈接:https://wwwxz.blog.csdn.net/article/details/117716912
2、ConcurrentHashMap
- 是HashMap的一個執行緒安全的、支持高效并發的版本,使用了鎖分段技術來保證執行緒安全;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/286213.html
標籤:其他
