1.concurrenthashmap
雖然hashtable執行緒安全,但是多執行緒訪問 時同一時間只能有乙個執行緒訪問,效率不高,concurrenthashmap引入了乙個「分段鎖」的概念,具體可以理解為把乙個大的map拆分成n個小的hashtable,根據key.hashcode()來決定把key放到哪個hashtable中。把map分成了16個segment,put和get的時候,都是現根據key.hashcode()算出放到哪個segment中。
2.copyonwrite
讀寫分離,寫資料時在記憶體中複製乙份容器的引用,讀的時候讀取原來的那份容器,寫完成之後將原來的引用指向寫完的拷貝出的那個容器。適合讀多寫少的情況。
3.priorityblockingqueue
public
class
task
implements
comparable
<
task
>
public
void
setid
(intid)
public
string
getname
() public
void
setname
(string
name)
@override
public
intcompareto
(task
task
) public
string
tostring
() }
public
class
usepriorityblockingqueue
}task類需要重寫compareto方法,priorityblockingqueue在使用take方法後會把最小的那個元素放在佇列首。
4.delayqueue
public class wangba implements runnable
public void xiaji(wangmin man)
@override
public void run() catch (interruptedexception e)
} }
public static void main(string args)
catch(exception e)
} }
public class wangmin implements delayed
public string getname()
public string getid()
/**
* 用來判斷是否到了截止時間
*/
@override
public long getdelay(timeunit unit)
/**
* 相互批較排序用
*/
@override
public int compareto(delayed delayed)
}
根據compareto方法在延遲時間長度排序後依次在take後出佇列。
Java併發容器
同步容器將所有容器狀態的訪問都序列化,以實現執行緒安全性。這種方式的代價會嚴重降低併發性,多個執行緒競爭容器的鎖時,吞吐量將嚴重降低。併發容器是針對多個執行緒併發訪問設計的。通過併發容器來代替同步容器,可以極大地提高伸縮性並降低風險。與hashmap一樣,concurrenhashmap也是乙個基於...
java併發容器
一 同步容器都是執行緒安全的 如vector 和 hashtable collections.synchronized 實現執行緒安全的是通過,將它們的狀態封裝起來,並對每個公有方法都進行同步。但在一些復合操作時,還是要加鎖來保護復合操作。在容器在迭代過程中被修改時,會拋異常 二 併發容器可以改進一...
併發程式設計9 併發容器
解決併發情況下的容器執行緒安全問題 譬如 vector,hashtable,都是給予同步鎖實現的 concurrent包下的類,大部分都是使用系統底層的實現,類似於native public class test09 latch.countdown for thread t arr try catc...