Put another way, in nearly every case, this lock structure will be a read situation FAR more often than it will be a write structure, since every single lookup will read, but only an un-encountered ClassLoader will write.  That vastly puts this into ReadWriteLock territory from a performance perspective.