Я думаю, что у вас есть гонка. Проблема, которую я вижу, заключается в том, что поток, находящийся в состоянии 'put', НЕ МОЖЕТ быть уверен, что вставляемый список не был удален и / или заменен другим списком.
Обратите внимание:
Поток 1 вызывает метод put () и получает (или создает) список, связанный с ключом. Тем временем Поток 2 удаляет этот список с карты. Данные потеряны.
Я думаю, вам нужно добавить цикл повторных попыток, чтобы убедиться, что правильный список находится на карте после добавления к нему.