use ConcurrentHashMap instead of Hashtable
use CHM.putIfAbsent instead of explicit synchronization
remove volatile from invalidator declaration
don't synchronize on invalidator getter methods