Вопрос проверяет умение проектировать блокировки для конкретных идентификаторов в многопоточной среде.
Короткий ответ
Используйте ConcurrentHashMap с ReentrantLock или synchronized:
Map<Long, Lock> locks = new ConcurrentHashMap<>();
Lock lock = locks.computeIfAbsent(id, k -> new ReentrantLock());
lock.lock();
try {
// Критическая секция
} finally {
lock.unlock();
}Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.