monitor(同步)

       在阅读Java并发相关源码的时候,有很多地方都提到了monitor对象,比如在Object对象的notify()方法的注释中,就提到该方法是用于唤醒在等待当前对象monitor对象的线程,如果有多个等待线程,会选一个线程唤醒。但是一直没搞明白monitor对象是基于什么机制实现的。查资料的时候看到了维基百科的解释,是比较完整的,特此翻译记录。

       本文翻译自维基百科,原文地址:https://en.wikipedia.org/wiki/Monitor_%28synchronization%29

       在并发编程中,monitor是一个同步块,允许线程有同步互斥和等待(阻塞)特定条件变为false的能力。monitor同样有一个机制,可以通知其他的线程,当它们等待的条件满足的时候。monitor由一个互斥(锁)对象和条件变量组成,条件变量本质上是一个包含等待特定条件的线程的容器。monitor提供了一种机制,可以让线程暂时的放弃进入互斥的权利,从而可以在重新获取互斥操作和重新消费任务的时候,先等待条件的满足。

       Monitor的另外一种定义是一个线程安全的类、对象或者模块,它封装了互斥锁,可以让多个线程安全的访问一个方法或变量。monitor定义的特性是,它的方法可以互斥的执行:在任何时间点,最多一个线程可以执行它的任何一个方法。通过使用一个或多个条件变量,它同样可以提供多个线程等待某个特定条件的能力(即上面关于monitor的定义)。这篇文章剩下的部分,monitor都是指的线程安全的对象/类/模块。

       Monitor是Per Brinch Hansen和C.A.R.Hoare提出来的,最早是在Brinch Hansen的并发Pascal语言中做了实现。

 

       

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值