title: Explicit Locks vs Implicit Locks
body: <p>Is using Locks (<code>java.util.concurrent.locks.Lock</code>) instead of keyword <code>synchronized</code> + method <code>wait()</code> and method <code>notify()</code> totally the same?</p>
  
  <p>Can I thread-safely program using locks (explicit locks) rather than implicit locks (<code>synchronized</code>)?</p>
  
  <p>As of know I have always been using implicit locks. I am aware of the advantages given by the <code>Lock</code> interface implementation like methods: <code>isLocked()</code>, <code>getLockQueueLength()</code>, <code>getHoldCount()</code>, etc... however still the old school way (<code>wait()</code> and <code>notify()</code>) would have other limits other than not having those methods?</p>
  
  <p>I am also aware of the possibility of constructing a lock with a (boolean fairness) parameter which allows lack of starvation.</p>