簡體   English   中英

使用哪一個:HashMap 和 ConcurrentHashMap with Future values JAVA?

[英]Which one to use: HashMap and ConcurrentHashMap with Future values JAVA?

基本上我們傾向於在多線程環境中使用 ConcuttentHashMap。 我目前的代碼是這樣的:

ExecutorService executor = Executors.newFixedThreadPool(3);
Map<String, Future<String>> myMap = new HashMap<String, Future<String>>();
myMap.put("SomeValue", executor.submit(() -> return callAndReturnStringMethod("SomeValue"));
myMap.put("AnotheValue", executor.submit(() -> return callAndReturnStringMethod("AnotheValue"));
...
....

我只想存儲與傳遞的 String 作為映射中的 Key 對應的異步線程調用的未來對象。

我的第一個問題:在處理 Future 對象時使用 HashMap 而不是 ConcurrentHashMap 會好嗎? 在這種情況下我應該使用 ConcurrentHashMap 嗎? 第二個問題:如果我使用后一個,會有什么取舍?

你這么說

地圖值沒有得到修改。

所以應該沒有理由選擇 ConcurrentHashMap。 ConcurrentHashMap 旨在提供跨線程操作的線程安全性和原子性,您都不需要。

權衡是當您不需要線程安全/原子操作時,您要為它們付出代價。 至於實際是多少,這取決於您的應用程序。

相關主題

兩者都不。

使用EnumMap並將您的SomeValue/AnotherValueenum 構建速度更快,搜索速度更快,存儲更緊湊。 如果您不打算同時更改ConcurrentHashMap本身,我認為使用任何並發數據結構的理由為零。

暫無
暫無

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

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