Это зависит от того, что вы имеете в виду под «доступом». Если вы просто читаете, вы можете читать даже те же самые ключи, если видимость данных гарантирована правилами " произойдет до ". Это означает, что HashMap
не должен изменяться, и все изменения (начальные конструкции) должны быть завершены до того, как любой читатель начнет доступ к HashMap
.
Если вы измените HashMap
каким-либо образом, то ваш код просто сломан. @Stephen C дает очень хорошее объяснение, почему.
РЕДАКТИРОВАТЬ: Если первый случай соответствует вашей реальной ситуации, я рекомендую вам использовать Collections.unmodifiableMap()
, чтобы убедиться, что ваша HashMap никогда не изменяется. Объекты, на которые указывает HashMap
, также не должны меняться, поэтому агрессивное использование ключевого слова final
может помочь вам.
И, как говорит @Lars Andren, ConcurrentHashMap
- лучший выбор в большинстве случаев.