By convention, the Iterator is implemented so that the bypass action never changes the state of the collection. It only indicates the current position in the collection and controls the iteration logic. Therefore, if you scan the same collection on N different threads, everything should work fine.
However, note that Java Iterator allows you to delete items, and ListIterator even supports an established operation. If you want to use these actions with at least one of the threads, you will probably encounter concurrency problems (ConcurrentModificationException) if the Iterator is not specifically designed for such scenarios (for example, with ConcurrentHashMap iterators).
source share