也是面试出现的
背景是java,因为用到 ConcurrentHashMap
如下代码
private ConcurrentHashMap<String, String> map = new ConcurrentHashMap<>();
// implement a method
void operateIfNotLocked(String lockKey) {
String value = map.get(lockKey);
if (lockKey == null) {
map.put(lockKey);
// do some logic if lockKey does not exist
map.remove(lockKey);
}
}
这里map充当一个管理lock的角色。
目前上面这段代码明显不是thread safe的。如何不用别的lock,不用synchronized,只用 map 本身让它变成 thread safe。