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();
}