2016-07-20 2 views

ответ

5

Вы можете увидеть изменения после окончания цикла. Вы можете распечатать карту снова, чтобы увидеть разницу. Он будет пустым. Я хотел бы добавить часть @waldheinz «s answer:

Что произойдет, если вы поставите или удалить значение из карты в то время как итерация его?

Гарантируется, что все будет не ломаются, если вы сделаете это (это часть того, что «одновременно» в ConcurrentHashMap средств). Однако нет никакой гарантии, что один поток увидит изменения на карте, которые выполняет другой поток (без получения нового итератора с карты). Итератор гарантированно отражает состояние карты на момент ее создания. Дальнейшие изменения могут быть отражены в итераторе, но они не обязательно должны быть.