is synchronized needed here considering the below readLock?