Java并发 - synchronized 关键字

2021/07/29 concurrent 共 480 字,约 2 分钟
Bob.Zhu

在多线程并发编程中 synchronized 一直是元老级角色,很多人都会称呼它为重量级锁。但是,随着 Java SE 1.6 对 synchronized 进行了各种优化之后,有些情况下它就并不那么重了。本文详细介绍 Java SE 1.6 中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构 和升级过程。

锁对象

利用 synchronized 实现同步的基础:Java 中的每一个对象都可以作为锁。具体表现为以下 3 种形式:

  • 普通方法:锁是当前实例对象
  • 静态方法:锁是当前类的 Class 对象
  • 方法块: 锁是 Synchonized 括号里配置的对象

实现原理

当一个线程试图访问同步代码块时,它首先必须得到锁,退出或抛出异常时必须释放锁。那么锁到底存在 哪里呢?锁里面会存储什么信息呢?

开始写作吧

![image-alter](/image/post/2021/07/29/01/xxx.jpg)

参考资料

文档信息

Search

    Table of Contents