Made improvement on concurrent access by replacing synchronzed object lock
with ReentrantReadWriteLock.