Java并發(fā)編程之同步容器與并發(fā)容器詳解
一、同步容器
1、Vector——>ArrayList
- vector 是線程(Thread)同步(Synchronized)的,所以它也是線程安全的;
- Arraylist是線程異步(ASynchronized)的,是不安全的;
2、Hashtable——>HashMap
- Hashtable是synchronized,這意味著Hashtable是線程安全的,多個(gè)線程可以共享一個(gè)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又是一個(gè)內(nèi)部靜態(tài)類(lèi),該內(nèi)部靜態(tài)類(lèi)中的add()、set()、get()等方法都在方法內(nèi)部添加了synchronized關(guān)鍵字,如下圖:
二、并發(fā)容器
1、CopyOnWriteArrayList
- 寫(xiě)操作高效率并發(fā)并且是線程安全的;
- 讀操作無(wú)鎖的ArrayList;
2、ConcurrentHashMap
- 是HashMap的一個(gè)線程安全的、支持高效并發(fā)的版本,使用了鎖分段技術(shù)來(lái)保證線程安全;
到此這篇關(guān)于Java并發(fā)編程之同步容器與并發(fā)容器詳解的文章就介紹到這了,更多相關(guān)java同步容器與并發(fā)容器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Cloud 部署時(shí)使用 Kubernetes 作為注冊(cè)中心和配置中
Spring Cloud Kubernetes提供了使用Kubernete本地服務(wù)的Spring Cloud通用接口實(shí)現(xiàn),這篇文章主要介紹了Spring Cloud 部署時(shí)如何使用 Kubernetes 作為注冊(cè)中心和配置中心,需要的朋友可以參考下2024-05-05Java并發(fā)編程中的ReentrantLock類(lèi)詳解
這篇文章主要介紹了Java并發(fā)編程中的ReentrantLock類(lèi)詳解,ReentrantLock是juc.locks包中的一個(gè)獨(dú)占式可重入鎖,相比synchronized,它可以創(chuàng)建多個(gè)條件等待隊(duì)列,還支持公平/非公平鎖、可中斷、超時(shí)、輪詢等特性,需要的朋友可以參考下2023-12-12Java實(shí)現(xiàn)獲取指定個(gè)數(shù)的不同隨機(jī)數(shù)
今天小編就為大家分享一篇關(guān)于Java實(shí)現(xiàn)獲取指定個(gè)數(shù)的不同隨機(jī)數(shù),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01