Да, ваш код будет работать нормально. ConcurrentHashMap
гарантирует, что все вставленные отображения будут выполняться потокобезопасным способом.
Вам не нужно заботиться о pool
и cache
- они, по сути, являются конечными переменными, и, как таковые, их значения однажды устанавливаются во время построения (перед запуском любого многопоточного кода ) больше не изменится.
Что может вас смущать, так это то, что при работе с неокончательными полями вам может понадобиться пометить их как volatile
, если вы собираетесь их изменить и быть уверенными, что изменение правильно распространяется по всем потокам. Но, как сказано выше, обратите внимание, как в этом случае значение pool
и caches
никогда не изменяется.