同步机制解释

同步

同步是一种并发操作机制,用来预防、避免对资源不适当的交替使用(一般称为竞争),保障交替使用资源的安全。Java使用线程来实现并发。互斥是同步的特殊情况,即同一时间最多允许一个线程访问受保护的代码或者数据。HotSpot VM使用监视器(monitor)对象来保障线程运行代码之间的互斥。
HotSpot VM吸收了非竞争和竞争性同步操作的最先进技术,极大的提高了同步性能。
非竞争性同步,指的是同一个线程里在其他无归属monitor对象(未被任何线程拥有的对象)上的同步操作,Java 5 HotSpot VM中引入了偏向锁,用于对象在其生命周期内最多只被一个线程锁住,一旦开启偏向锁,该线程不需要借助原子指令就可以对该对象进行锁定和解锁。
竞争性同步操作可以使用高级自适应自旋锁技术来改善吞吐量。
HotSpot VM内部表示Java对象的第一个字(Word),包含了Java对象的同步状态编码,通常称为标记字(Mark Word)。为了节约空间,标记字会依据不同的状态复用存储空间。包含以下对象同步状态:

  • 中立:已解锁
  • 偏向:已锁定/已解锁且无共享
  • 栈锁:已锁定且共享,但非竞争,共享的意思是该标记指向锁对象在线程栈中的标记字副本。
  • 膨胀:已锁定/已解锁且共享和竞争。线程在monitor-enter或者wait()时被阻塞。该标记指向一个重型的object-monitor结构。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值