title: ConcurrentHashMap.put V.S. ConcurrentHashMap.replace
body: <p>From the Javadoc I know <code>ConcurrentHashMap.replace</code> is atomic, but what about <code>ConcurrentHashMap.put</code>? I see they are differently implemented in the source code but I'm not able to figure out their differences. Any gurus to give some guidelines about how to use these two methods?</p>