You may wish to see this blogpost for another pitfall yielding a ConcurrentModificationException
when traversing a multimap, with no other thread interfering. In short, if you traverse multimap's keys, accessing the respective collection of values associated with each key and remove some element from such a collection, if that element happens to be the last of the collection you are going to have ConcurrentModificationException
when you try to access the next key - because emptying a collection triggers the removal of the key, thus structurally modifying the multimap's keyset.