【发布时间】:2012-11-14 13:04:34
【问题描述】:
如果我查看 Java 中的 ConcurrentHashMap,
特别是 putIfAbsent 方法,该方法的典型用法是:
ConcurrentMap<String,Person> map = new ConcurrentHashMap<>();
map.putIfAbsent("John",new Person("John"));
问题在于 Person 对象总是被初始化。
是否有一些帮助集合(可能是一些提供此功能的 java 框架)
这将为我提供与 ConcurrentHashMap 类似的行为,并且可以使用仿函数或任何其他方法来构造值对象,
并且仅当映射不包含给定键的值时才会调用构造代码(即 - functor.execute() )?
【问题讨论】:
-
有趣的事实:Java 8
ConcurrentHashMap将直接支持这一点。
标签: java multithreading concurrency java.util.concurrent