CacheMap now uses a ReadWriteLock instead of a single Semaphore