Из Javadoc :
Обратите внимание, что эта реализация не синхронизирована .Если несколько потоков обращаются к хэш-карте одновременно, и хотя бы один из потоков структурно изменяет карту, она должна быть синхронизирована извне.
Необходимо применить внешнюю синхронизацию;в противном случае состояние карты может быть повреждено при доступе несколькими потоками.
Если вы синхронизируете, никакой другой элемент не может быть добавлен, пока карта перестраивается.
Если выне синхронизируются, вы не используете класс, как описано в документации, поэтому поведение не определено.