тупик невозможен при использовании без украшения HashMap
. Класс HashMap
не блокирует, поэтому нет возможности для тупика.
Однако, если вы использовали Collections.synchronizedMap(...)
, чтобы обернуть HashMap
, и вы использовали это в сочетании с другими блокировками, вы могли бы зайти в тупик ... если разные потоки получили блокировки на объекты в другом порядке.
И очевидно, что несколько потоков, обращающихся к одному и тому же HashMap
(который не является потокобезопасным), опасны. Действительно, может быть в состоянии для одного потока увидеть несогласованное состояние HashMap
, которое заставляет его войти в бесконечный цикл; например застрял в видимом цикле в одной из цепочек хешей. Это кажется маловероятным, но, чтобы быть уверенным, что это было невозможно, вам необходимо провести тщательный анализ кода с учетом аномалий памяти, вызванных множественными потоками, попадающими в структуру данных без синхронизации.