Even putIfAbsent doesn't completely solve your problem.
e.g. what if something just adds something while you're doing the merge?
Or is that what you meant by "For simple values this will probably be fine"?
But then the first one wins. :-)
So how are you going to fix it? :-)
Or rather if putIfAbsent() was there, it would be a user error if not used when contention could occur.