- 减少锁持有时间
public synchronized void syncMethod(){
othercode1();
mutextMethod();
othercode2();
}
上述代码中,只有第二个方法需要同步,所以需要将锁加载第二个方法中中去
public void syncMethod2(){
othercode1();
synchronized(this){
mutextMethod();
}
othercode2();
}
减少锁粒度
将大对象,拆成小对象,大大增加并行度,例如ConcurrentHashMap的实现
锁分离
根据功能进行分离,例如ReadWriteLock
LinkedBlockingQueue的实现,只要操作互不影响,锁就可以分离。- 锁粗化
- 锁消除