Java并發(fā)編程之同步容器與并發(fā)容器詳解
一、同步容器
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又是一個內(nèi)部靜態(tài)類,該內(nèi)部靜態(tài)類中的add()、set()、get()等方法都在方法內(nèi)部添加了synchronized關(guān)鍵字,如下圖:

二、并發(fā)容器
1、CopyOnWriteArrayList
- 寫操作高效率并發(fā)并且是線程安全的;
- 讀操作無鎖的ArrayList;
2、ConcurrentHashMap
- 是HashMap的一個線程安全的、支持高效并發(fā)的版本,使用了鎖分段技術(shù)來保證線程安全;
到此這篇關(guān)于Java并發(fā)編程之同步容器與并發(fā)容器詳解的文章就介紹到這了,更多相關(guān)java同步容器與并發(fā)容器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java中基于Nacos實現(xiàn)Sentinel規(guī)則持久化詳解
這篇文章主要介紹了Java中基于Nacos實現(xiàn)Sentinel規(guī)則持久化詳解,Sentinel Dashboard中添加的規(guī)則數(shù)據(jù)存儲在內(nèi)存,微服務停掉規(guī)則數(shù)據(jù)就消失,在?產(chǎn)環(huán)境下不合適,我們可以將Sentinel規(guī)則數(shù)據(jù)持久化到Nacos配置中?,讓微服務從Nacos獲取規(guī)則數(shù)據(jù),需要的朋友可以參考下2023-09-09
Java中@JSONField和@JsonProperty注解的用法及區(qū)別詳解
@JsonProperty和@JSONField注解都是為了解決obj轉(zhuǎn)json字符串的時候,將java bean的屬性名替換成目標屬性名,下面這篇文章主要給大家介紹了關(guān)于Java中@JSONField和@JsonProperty注解的用法及區(qū)別的相關(guān)資料,需要的朋友可以參考下2024-06-06
Java基于裝飾者模式實現(xiàn)的圖片工具類實例【附demo源碼下載】
這篇文章主要介紹了Java基于裝飾者模式實現(xiàn)的圖片工具類,結(jié)合完整實例形式分析了裝飾者模式實現(xiàn)圖片的判斷、水印、縮放、復制等功能,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-09-09
SpringBoot+Redis實現(xiàn)查找附近用戶的示例代碼
SpringDataRedis提供了十分簡單的地理位置定位的功能,本文主要介紹了SpringBoot+Redis實現(xiàn)查找附近用戶的示例代碼,具有一定的參考價值,感興趣的可以了解一下2024-02-02
SpringMVC中controller接收json數(shù)據(jù)的方法
這篇文章主要為大家詳細介紹了SpringMVC中controller接收json數(shù)據(jù)的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09

