Every call to getProperty causes a lock (related to the reload functionality). In a near real-time system where we have many concurrent threads this affects heavily on the application TPS.
Possible solution will be: getProperty only returns current value. Reload when needed occurs in a background thread that updates the in-memory map (perhaps by using CopyOnWrite collections?).