<div dir="ltr">Hi everyone, <div><br></div><div>From what I know, locking on local variables is useless, Brian Goetz in his book gave the following as an example of a bad lock</div><div><br></div><div> synchronized(new Object()){</div><div>  ..</div><div> }</div><div><br></div><div>So I assume, the code above is equivalent to the following</div><div><br></div><div>  Object o = new Object();</div><div>  </div><div><div> synchronized(o){</div><div>  ..</div><div> }</div></div><div><br></div><div>However looking at ConcurrentHashMap#computeIfAbsent I see the following</div><div><br></div><div>Node<K,V> r = new ReservationNode<K,V>();<br></div><div><div>    synchronized (r) {</div><div>    ...</div><div>    }</div></div><div><br></div><div>Just curious, why is that?</div><div><br></div><div><br></div><div>Thanks</div><div>Sleiman </div><div><br></div></div>