using ConcurrentHashMap for decrease synchronization

This is  cherry-pick of 1c0b5510557e31c608610b83584e32c6bf8b6d28 from master