Как я могу выполнить потокобезопасное получение и удаление с помощью ConcurrentHashMap?JAVA

Программисты JAVA общаются здесь
Anonymous
Как я могу выполнить потокобезопасное получение и удаление с помощью ConcurrentHashMap?

Сообщение Anonymous »

В интервью меня попросили проверить, работает ли следующий код должным образом.

Код: Выделить всё

ConcurrentHashMap chm = new ConcurrentHashMap();

if (chm.get(key) != null) {
chm.get(key).doSomething();
chm.remove(key);
}
Согласно JavaDocs, get возвращает значение последней завершенной операции обновления. Таким образом, если поток 1 уже вызвал chm.remove(key) и если поток 2 вошел в оператор if и собирается вызвать метод get, мы можем получить исключение. Это правильно?

Как сделать это потокобезопасным?

Вернуться в «JAVA»