使用ReentrantLock优于synchronized的好处

时间:2015-05-14 06:24:47

标签: java multithreading reentrantlock synchronized-block

我发现使用ReentrantLock优于同步

的另一个好处

下面的代码显示即使在临界区锁定中发生异常(使用ReentrantLock)

void someMethod() {
     //get the lock before processing critical section.
   lock.lock();
   try 
   {
   // critical section 
   //if exception occurs
   }
   finally
   {
   //releasing the lock so that other threads can get notifies
   lock.unlock();
   }
}//end of method

现在使用synchronized

void someMethod() {
     //get the lock before processing critical section.
  synchronized(this) 
  {
    try 
    {
    // critical section 
    //if exception occurs
    }
    finally
    {
    //I don't know how to release lock

    }
  }

}//end of method

通过比较两个代码,我发现使用synchronized块还有一个缺点 即如果临界区发生异常,则无法释放锁。

我是对的吗?

如果我错了,请纠正我。

如果同步块中发生异常,是否有释放锁定?

1 个答案:

答案 0 :(得分:0)

如果在synchronized块中发生异常,则仍会释放锁定。因此锁定将在所有情况下释放。

ReentrantLock的优势在于他们使用比较和扫描,特别是在低争用时表现更好。