Статьи

ConcurrentHashMap: вызов только одного метода для каждого ключа

Каждый метод ConcurrentHashMapявляется потокобезопасным. Но вызов нескольких методов ConcurrentHashMapдля одного и того же ключа приводит к условиям гонки. А ConcurrentHashMapрекурсивный вызов одного и того же метода для разных ключей приводит к тупикам.

 

Давайте посмотрим на пример, чтобы понять, почему это происходит:

 

Вызов нескольких методов

 

В следующем тесте я использую два метода ConcurrentHashMapдля одного и того же ключа 1. Метод   update, строки с 3 по 10, сначала получает значение с   ConcurrentHashMap помощью метода   get. Затем обновление увеличивает значение и возвращает его, используя метод   put , строки 6 и 8:

 


    Джава