Java 锁粗化、锁消除

锁粗化:JIT编译时扩大锁定区域,避免对同一个类或对象频繁加锁、释放锁。

例1:

public void doMethod(){
    synchronized(lock){
        //do 1
    }

    synchronized(lock){
        //do 2
    }

    synchronized(lock){
        //do 3
    }
}
public void doMethod(){
    synchronized(lock){
        // do 1
        // do 2
        // do 3
    }
}

 锁消除:JIT时判断不存在锁竞争,则消除锁。

例1:

    public void doMethod(){
        Object object = new Object();
        synchronized (object){
            // do 1
        }
    }

猜你喜欢

转载自blog.csdn.net/haoranhaoshi/article/details/108508308