@vblagoje Intuitively I'd say that synchronizing on the same instance on every map() should have a visible impact, but I'm a bit more worried about having better isolation and more tests. 

I think I noticed another problem: when a combiner is not specified, `combine()` just returns the collector's `store`, and the Callable that does the migration of the keys then accesses the store without having any lock. The fix should be to create a shallow copy of the store in `combine()` if there is no combiner set.