检查ConcurrentHashMap的computeIfAbsent是否发生了变化

时间:2015-09-22 14:35:31

标签: java java.util.concurrent

你怎么知道ConcurrentHashMap的computeIfAbsent函数必须调用给定的生成器方法(" mappingFunction")?
从Javadoc我相信它返回新值,如果生成了一个值,如果存在旧值则返回旧值。我可以从lambda生成器函数设置一个外部标志,但那会很尴尬......

1 个答案:

答案 0 :(得分:4)

您可以改为使用compute

map.compute(key, (k, v) -> v == null ? /*absent*/ this::getValue : /*present*/ v);

并添加一些逻辑来检查调用哪个分支。