java併發程式設計容器

2021-07-24 06:24:42 字數 1672 閱讀 6266

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...