簡體   English   中英

用於快速並發插入的最佳Java數據結構

[英]Best Java Data Structure for Fast, Concurrent Insertions

我的用例如下:我有10個線程同時寫入一個數據結構。 數據結構中元素的順序無關緊要。 所有元素都是獨一無二的。 我只會在最后一次從這個數據結構中讀取一次。

什么是最適合此目的的本機Java數據結構? 從我的閱讀,似乎Collections.synchronizedList可能是轉到選項?

我有10個線程同時寫入一個數據結構。

我認為最好每個線程使用一個單獨的數據結構。 這樣,線程之間不需要同步,而且CPU緩存也更友好。

最后他們可以加入。

至於底層結構:如果元素是固定大小,則數組/檢查器最好。 加入它們只會獲取它們占用的內存塊的副本 ,具體取決於實現 - 但列表總是會更慢。

您無需在列表上進行同步,因為每個線程都可以在其本地副本上工作,最后可以將所有線程的結果連接到一個最終列表中。

如果我將使用JDK7及更高版本,那么我將使用fork和join,我將在每個分叉任務中創建簡單List ,最后在連接階段結束時將其加入主列表中。

如果我在JDK6上,那么我可以使用CountDownLatch ,其數量為10.在寫入各自的列表(從主控制器線程傳遞到線程)后,每個線程都會對鎖存器和主控制器進行倒計時,一旦完成所有線程,我會把所有的結果合二為一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM