Do lock.lock() outside of the try{} finally {lock.unlock()} block:
- It doesn't make sense to unlock() if lock() threw
- The JavaDoc of Lock suggests doing it this way as well.