检查 ConcurrentHashMap 的 computeIfAbsent 是否改变了什么
Check if computeIfAbsent of ConcurrentHashMap changed something
您怎么知道 ConcurrentHashMap 的函数 computeIfAbsent 必须调用给定的生成器方法 ("mappingFunction")?
从 Javadoc 我相信它 returns 新值,如果一个被生成,旧值如果一个存在。我可以从 lambda 生成器函数设置一个外部标志,但这会很尴尬...
您可以使用 compute
代替:
map.compute(key, (k, v) -> v == null ? /*absent*/ this::getValue : /*present*/ v);
并添加一些逻辑来检查调用了哪个分支。
您怎么知道 ConcurrentHashMap 的函数 computeIfAbsent 必须调用给定的生成器方法 ("mappingFunction")?
从 Javadoc 我相信它 returns 新值,如果一个被生成,旧值如果一个存在。我可以从 lambda 生成器函数设置一个外部标志,但这会很尴尬...
您可以使用 compute
代替:
map.compute(key, (k, v) -> v == null ? /*absent*/ this::getValue : /*present*/ v);
并添加一些逻辑来检查调用了哪个分支。