Недавно я писал параллельную программу на Java и столкнулся с дилеммой: предположим, у вас есть глобальная структура данных, которая является частью обычной несинхронизированной, неконкурентной библиотеки, такой как HashMap. Можно ли позволить нескольким потокам выполнять итерацию по коллекции (только чтение, без изменений), возможно, в разные периоды чередования, т.е. поток 1 может быть на полпути к итерации, когда поток 2 получает свой итератор на той же карте?