01.减小锁的持有时间

减小锁的持有时间

减小锁的持有时间是为了降低锁的冲突的可能性,提高体系的并发能力。

只在必要时进行同步加锁操作

例如下的代码:在加锁时先判断是否满足同步代码逻辑的要求,以达到减小锁的占有几率的目的。

// 使用条件判断减少锁持有时间提高效率。
public void matcher(Char input) {
    if (!compiled) {
        synchronized(this) {
            if (!compiled) {
                compile();
            }
        }
    }
}

只在必须加锁的代码段加锁

下面的代码的执行只针对必须要加锁的代码段进行加锁操作,减少锁的占有的时间。

public synchronized void syncMethod() {
  method1();
  method2();
  method3();
}

public void syncMethod() {
  method1();
  synchronized(this) {
    method2();
  }
  method3();
}
下一页