Java围绕锁同步语句

shi*_*har 2 java multithreading synchronization locking

我想知道是否

synchronize (lock) {
    ... 
}
Run Code Online (Sandbox Code Playgroud)

锁是一个实例java.util.concurrent.locks.Lock,lock像任何其他对象一样对待 或作为try-finally成语,即

 lock.lock(); 
 try {
     ... 
 } finally { 
    lock.unlock();
 }
Run Code Online (Sandbox Code Playgroud)

Mat*_*hen 13

锁文件:

请注意,Lock实例只是普通对象,它们本身可以用作synchronized语句中的目标.获取Lock实例的监视器锁定与调用该实例的任何lock()方法没有指定的关系.为避免混淆,建议您不要以这种方式使用Lock实例,除非在他们自己的实现中.

所以基本上,它被视为任何其他对象.并且,不要那样做.

  • FindBugs会发现这个bug. (3认同)
  • @hhafez:"不要这样做"因为文档说"为了避免混淆,建议你不要以这种方式使用Lock实例,除非在他们自己的实现中." (2认同)