Tra*_*chs 4 java java.util.concurrent
你怎么知道 ConcurrentHashMap 的函数 computeIfAbsent 必须调用给定的生成器方法(“mappingFunction”)?
从 Javadoc 我相信它会返回新值(如果生成了一个值,如果存在则返回旧值)。我可以从 lambda 生成器函数设置一个外部标志,但这会很尴尬......
你可以compute改用:
map.compute(key, (k, v) -> v == null ? /*absent*/ this::getValue : /*present*/ v);
Run Code Online (Sandbox Code Playgroud)
并添加一些逻辑来检查调用了哪个分支。
| 归档时间: |
|
| 查看次数: |
414 次 |
| 最近记录: |