Как я могу выполнить потокобезопасное получение и удаление с помощью 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, мы можем получить исключение. Это правильно?

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

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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