Concurrenthashmap не обновляется между потоками - PullRequest
0 голосов
/ 19 сентября 2018

Я использую параллельную хэш-карту, которая заполняется по мере поступления сообщения jms. Когда приходит тот же ключ, его необходимо переопределить.

Теперь я сталкиваюсь с проблемой: карта всегда пуста.Поэтому каждый раз, когда запись добавляется, а не переопределяется.

Не знаю, какую ошибку я делаю.Пожалуйста, просмотрите код и помогите мне.

public class Dispatcher{ 
    private static ConcurrentHashMap<String, Executor> map= new ConcurrentHashMap<>(); 

    public dispatch(String key, String message) { 
    if(map.containsKey(key)){ //this always returns false. Printed to check and it is empty.
         //rest of the code 
    }else{
         map.put(key,new Executor(message)); 
         //rest of the code
    }}
public class MsgListener implements SessionAwareListener {
    Dispatcher dispatcher = new Dispatcher();
    public void onMessage(javax.jms.Message, Session session) {
        //Rest of the code
        dispatcher.dispatch(key,msg);
}}

Вход, используемый для тестирования:

Lock1 - Сообщение 1

Lock1 - Сообщение 2

Lock2- Сообщение 3

Lock3 - Сообщение 4

Класс диспетчера создается только один раз внутри вызывающего класса.Я проверил это и нашел для печати тот же объект.

...