出于某种原因,Intellijs文本光标一直跟随我的鼠标并突出显示所有内容.是否有一些设置可以做到这一点?我似乎无法通过搜索设置找到它.它还能在哪里?
我在一个 HashMap 上使用来自多个线程的.get(...),.put(...)和.clear()操作。.put(...)并且.clear()在一个synchronized块内但.get(...)不是。我无法想象这会导致问题,但在我见过的其他代码.get()中几乎总是同步的。
获取/放置的相关代码
Object value = map.get(key);
if(value == null) {
synchronized (map) {
value = map.get(key); // check again, might have been changed in between
if(value == null) {
map.put(key, new Value(...));
}
}
}
Run Code Online (Sandbox Code Playgroud)
明确只是:
synchronized (map) {
map.clear();
}
Run Code Online (Sandbox Code Playgroud)
由于同步,写入操作将使缓存无效,并且get(...)返回 null 或实例。我真的看不出什么地方会出错,或者通过将.get(...)操作放入一个synchronized(map)块会改进什么。