使用哪一个:hashmap和concurrenthashmap with future Value java?

z9gpfhce  于 2021-07-08  发布在  Java
关注(0)|答案(2)|浏览(451)

基本上,我们倾向于在多线程环境中使用震荡图。我当前的代码如下:

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"));
...
....

我只想将与传递的字符串对应的异步线程调用的未来对象存储为Map中的键。
我的第一个问题:在处理将来的对象时,使用hashmap而不是concurrenthashmap会好吗?在这个场景中我应该使用concurrenthashmap吗?第二个问题:如果我使用后者,会有什么取舍?

gcmastyq

gcmastyq1#

都不是。
使用 EnumMap 改变你的生活 SomeValue/AnotherValueenum s。它将更快地构建,更快地搜索和更紧凑的存储。如果您不打算更改 ConcurrentHashMap 同时,它自己。

xj3cbfub

xj3cbfub2#

你这么说
Map值未被修改。
所以没有理由选择concurrenthashmap。concurrenthashmap旨在提供线程安全性和跨线程操作的原子性,这两方面您都不需要。
权衡的结果是,当您不需要线程安全/原子操作时,您需要为它们付出代价。至于到底是多少,这取决于你的应用程序。
相关线程
性能concurrenthashmap与hashmap
concurrenthashmap有什么缺点吗?

相关问题