By default, Map s are not MT-Safe because most programs are single threaded and synchronisation doesn't come for free. Even in multi threaded programs, not all Map s are necessarily shared between multiple threads. When a Map is shared between multiple threads which need to be synchronised, the method of synchronisation must be carefully selected by the client code. There are tradeoffs between concurrency and overhead. The greater the concurrency, the greater the overhead.
More locks give greater concurrency but have greater overhead.
Map s may be more appropriate. It is important to be able to experiment with the synchronisation strategy at this stage of development without pain. The Locker specifies a lock and a set of functions for manipulating the lock. Each Map can have it's own lock by creating a separate Locker for each Map . Multiple Map s can share the same lock by sharing the same Locker .