juc集合包中的list和set
juc集合包中map
juc包中queue
concurrenthashmap
concurrentskiplistmap
copyonwritearraylist
concurrentskiplistset
copyonwritearrayset
concurrentlinkedqueue
deque
參考
主體內容包括collection集合和map類;而collection集合又可以劃分為list(佇列)和set(集合)。
list的實現類
list的實現類主要有: linkedlist, arraylist, vector, stack。
set的實現類
set的實現類主要有: hastset和treeset。
map的實現類
map的實現類主要有: hashmap,weakhashmap, hashtable和treemap。
juc集合包中的list和set實現類包括: copyonwritearraylist, copyonwritearrayset和concurrentskiplistset
juc集合包中map的實現類包括: concurrenthashmap和concurrentskiplistmap
功能和hashmap基本一致,內部使用紅黑樹實現的。
特性:內部使用跳表實現的,放入的元素會進行排序,排序演算法支援2種方式來指定:
通過構造方法傳入乙個comparator
放入的元素實現comparable介面
上面2種方式必選乙個,如果2種都有,走規則1。
特性:實現list的介面的,一般我們使用arraylist、linkedlist、vector,其中只有vector是執行緒安全的,可以使用collections靜態類的synchronizedlist方法對arraylist、linkedlist包裝為執行緒安全的list,不過這些方式在保證執行緒安全的情況下效能都不高。
copyonwritearraylist是執行緒安全的list,內部使用陣列儲存資料,集合中多執行緒並行操作一般存在4種情況:讀讀、讀寫、寫寫、寫讀,這個只有在寫寫操作過程中會導致其他執行緒阻塞,其他3種情況均不會阻塞,所以讀取的效率非常高。
可以看一下這個類的名稱:copyonwrite,意思是在寫入操作的時候,進行一次自我複製
,換句話說,當這個list需要修改時,並不修改原有內容(這對於保證當前在讀執行緒的資料一致性非常重要),而是在原有存放資料的陣列上產生乙個副本,在副本上修改資料,修改完畢之後,用副本替換原來的陣列,這樣也保證了寫操作不會影響讀
特性:有序的set,內部基於concurrentskiplistmap實現的,放入的元素會進行排序,排序演算法支援2種方式來指定:
通過構造方法傳入乙個comparator
放入的元素實現comparable介面
上面2種方式需要實現乙個,如果2種都有,走規則1
特性:內部使用copyonwritearraylist實現的,將所有的操作都會**給copyonwritearraylist。
特性:高效併發佇列,內部使用鍊錶實現的。
特性:雙向佇列(deque)是queue的乙個子介面,雙向佇列是指該佇列兩端的元素既能入隊(offer)也能出隊(poll),如果將deque限制為只能從一端入隊和出隊,則可實現棧的資料結構。對於棧而言,有入棧(push)和出棧(pop),遵循先進後出原則。
乙個線性 collection,支援在兩端插入和移除元素。名稱 deque 是「double ended queue(雙端佇列)」的縮寫,通常讀為「deck」。大多數 deque 實現對於它們能夠包含的元素數沒有固定限制,但此介面既支援有容量限制的雙端佇列,也支援沒有固定大小限制的雙端佇列。
此介面定義在雙端佇列兩端訪問元素的方法。提供插入、移除和檢查元素的方法。每種方法都存在兩種形式:一種形式在操作失敗時丟擲異常,另一種形式返回乙個特殊值(null 或 false,具體取決於操作)。插入操作的後一種形式是專為使用有容量限制的 deque 實現設計的;在大多數實現中,插入操作不能失敗.
此介面擴充套件了 queue介面。在將雙端佇列用作佇列時,將得到 fifo(先進先出)行為。將元素新增到雙端佇列的末尾,從雙端佇列的開頭移除元素。從 queue 介面繼承的方法完全等效於 deque 方法,如下表所示:
實現了deque介面,內部使用鍊錶實現的高效的併發雙端佇列。
特性:
面試系列 JUC中常見的鎖
公平鎖 是指多個執行緒按照申請鎖的順序來獲取鎖類似排對打飯,先來後到 非公平鎖 是指在多執行緒獲取鎖的順序並不是按照申請鎖的順序,有可能後申請的執行緒比先申請的執行緒優先獲取到鎖,在高併發的情況下,有可能造成優先順序反轉或者飢餓現象 並發包reentrantlock的建立可以指定建構函式的boole...
面試系列 JUC中常見的鎖
公平鎖 是指多個執行緒按照申請鎖的順序來獲取鎖類似排對打飯,先來後到 非公平鎖 是指在多執行緒獲取鎖的順序並不是按照申請鎖的順序,有可能後申請的執行緒比先申請的執行緒優先獲取到鎖,在高併發的情況下,有可能造成優先順序反轉或者飢餓現象 並發包reentrantlock的建立可以指定建構函式的boole...
Python中常見的集合內建函式
一 集合型別方法 方法名稱 操作 s.issubset t 如果s是t的子集,則返回true,否則返回false s.issuperset t 如果s是t的超集,則返回true,否則返回false s.union t 返回乙個新集合,該集合是s和t的並集 s.intersection t 返回乙個新...