use ConcurrentHashMap instead of Hashtable
use CHM.putIfAbsent instead of explicit synchronization
remove volatile from invalidator declaration