devices = new ConcurrentHashMap<>();.
До создания потоков добавлятся одно устройство с id = "id": devices.put(id, new Device("a"));
Затем запускается два потока, второй сразу же кидается в слип на 2 секунды.
В одном потоке:
devices.get(id).setName("b");
В другом потоке после слипа:
print(devices.get(id).getName()).
Вопрос:
Правильно ли я понимаю, что так как setName не связан никаким образом с каким-либо порядком операций через synchronization actions, так как их нет, так как это просто референс к объекту в массиве, то возникает гонка и не возникает happens-before и print выведет a или b?
Да будет гонка
Обсуждают сегодня