Выполняя углубленный анализ ConcurrentHashMap
, я обнаружил в Интернете сообщение в блоге, в котором говорится, что даже ConcurrentHashMap
может застрять в бесконечном цикле.
Это дает этот пример. Когда я запустил этот код - он застрял:
public class Test {
public static void main(String[] args) throws Exception {
Map<Long, Long> map = new ConcurrentHashMap<>();
map.put(0L, 0L);
map.put((1L << 32) + 1, 0L);
for (long key : map.keySet()) {
map.put(key, map.remove(key));
}
}
}
Я не могу понять причину. Пожалуйста, объясните, почему возникает этот тупик.