jvm 同步原理

1. 监视器的含义

虚拟机为每一个对象和类都关联一个锁(又称为互斥体)。
锁住一个对象,就是获得对象关联的监视器。

一个线程可以允许对一个对象多次加锁(例如单例模式的双重加锁),前提是该对象持有对象锁。。

2. 两种监视区域:

同步方法和同步语句


3. Object类的方法对同步的支持

wait 与 notify

4. 过程描述

进入 入口区(即进入监视器的入口监视队列) public synchronized void method1() { 获得对象锁,持有监视器 。。。。。
。。。。。。
进入监视器的等候区,释放对象锁。 wait()
。。。。。。
唤醒等候区和进入区的对象(只是唤醒,代码继续向下执行) notifyall();

但是代码继续在该处向下执行 。。。。。。

继续执行直到离开监视器(即同步块的最后一条语句执行完毕) 。。。。。。。

}
监视器在被唤醒的在等候区和入口区的线程中选择一个线程,开始执行从上次中断的代码。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值