Java synchronize statement around a lock
java, locking, multithreading, synchronization
Solution
Lock documentation:
Note that Lock instances are just normal objects and can themselves be used as the target in a synchronized statement. Acquiring the monitor lock of a Lock instance has no specified relationship with invoking any of the lock() methods of that instance. It is recommended that to avoid confusion you never use Lock instances in this way, except within their own implementation.
So basically, it's treated as any other object. And, don't do that.
Problem
I was wondering if ``` synchronize (lock) { ... } ``` Where lock is an instance of `java.util.concurrent.locks.Lock`, treats `lock` like any other object or as the try-finally idiom i.e. ``` lock.lock(); try { ... } finally { lock.unlock(); } ```