java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java synchronized锁

Java中synchronized锁的深入理解

作者:舒一笑

这篇本文主要对Java中synchronized锁进行深入理解,文中通过synchronized的优化,synchronized的实现原理及synchronized的升级过程来介绍Java中synchronized锁,感兴趣的同学可以跟着小编一起来学习

使用范围

synchronized的优化

锁消除

锁膨胀

  public void method(){
        for (int i = 0; i < Integer.MAX_VALUE; i++) {
            synchronized ("") {
                // 业务代码
            }
        }
    }

锁升级

synchronized锁的实现原理

synchronized锁升级的过程演示

<dependency>
            <groupId>org.openjdk.jol</groupId>
            <artifactId>jol-core</artifactId>
            <version>0.9</version>
        </dependency>

/**
 * @author
 * @date 2023/5/28
 */
public class Test15 {
    public static void main(String[] args) throws InterruptedException {
        Thread.sleep(5000);
        Object o = new Object();
        System.out.println(ClassLayout.parseInstance(o).toPrintable());
		//thread 线程偏向锁
        Thread thread = new Thread(()->{
            synchronized (o){
                System.out.println("thread线程 :"+ClassLayout.parseInstance(o).toPrintable());
            }
        });
        thread.start();
        // 轻量级锁 -> 重量级锁
        synchronized (o){
            System.out.println("main线程 :"+ClassLayout.parseInstance(o).toPrintable());
        }
    }
}

锁转换状态示意图

LockRecord和ObjectMonitor存储的内容示意图

以上就是Java中synchronized锁的深入理解的详细内容,更多关于Java synchronized锁的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文