美文网首页
管程概念

管程概念

作者: Easy的幸福 | 来源:发表于2019-10-16 10:33 被阅读0次
什么是管程

Java采用的是管程技术,synchronized关键字及wait()、notify()、notifyAll()这三个方法都是管程的组成部分。管程和信号量是等价的,所谓等价指的是用管程能够实现信号量,也能用信号量实现管程。

管程,对应的英文是Monitor,很多Java领域的同学都喜欢将其翻译成“监视器”,这样是不是就瞬间明白了什么是管程。所谓管程,指的是管理共享变量以及对共享变量的操作过程,让他们支持并发。

并发编程领域,有两大核心问题:一个是互斥,即同一时刻只允许一个线程访问共享资源;另一个是同步,即线程之间如何通信、协作。这两大问题,管程都是能够解决的。


image

很像java里面的一个对象,synchronize其实在编译原理,就是一个monitor指令。

下面是一个同步的实例:

public class BlockedQueue<T>{
  final Lock lock =
    new ReentrantLock();
  // 条件变量:队列不满  
  final Condition notFull =
    lock.newCondition();
  // 条件变量:队列不空  
  final Condition notEmpty =
    lock.newCondition();

  // 入队
  void enq(T x) {
    lock.lock();
    try {
      while (队列已满){
        // 等待队列不满 
        notFull.await();
      }  
      // 省略入队操作...
      //入队后,通知可出队
      notEmpty.signal();
    }finally {
      lock.unlock();
    }
  }
  // 出队
  void deq(){
    lock.lock();
    try {
      while (队列已空){
        // 等待队列不空
        notEmpty.await();
      }
      // 省略出队操作...
      //出队后,通知可入队
      notFull.signal();
    }finally {
      lock.unlock();
    }  
  }
}

这个示例很经典,有很多变形,可以参考这篇文章

相关文章

  • 管程概念

    什么是管程 Java采用的是管程技术,synchronized关键字及wait()、notify()、notify...

  • Java 中的 Monitor 机制

    monitor的概念 管程,英文是 Monitor,也常被翻译为“监视器”,monitor 不管是翻译为“管程”还...

  • 管程-------线程根源

    管程和信号量是等价的,操作系统原理告诉我们,信号量可以解决所有的并发问题,但是Java语言采用的是管程这样一个概念...

  • Monitors

    monitor Condition variable 管程 管程的定义管程是对共享数据的访问进行控制的特殊的一段程...

  • Java并发之嵌套管程锁死(Nested Monitor Loc

    嵌套管程死锁是如何发生的 具体的嵌套管程死锁的例子 嵌套管程死锁 vs 死锁 嵌套管程锁死类似于死锁, 下面是一个...

  • 管程

    管程 信号量机制存在的问题 编写困难,容易出错 管程 定义 特殊的软件模块 组成 局部于管程的共享数据结构说明 对...

  • 管程

    管程:指的是管理共享变量以及对共享变量的操作过程,让他们支持并发。 Java在1.5之前仅仅提供了synchron...

  • 管程

    管程,指的是管理共享变量以及对共享变量的操作过程,让他们支持并发。翻译为 Java 领域的语言,就是管理类的成员变...

  • Condition

    Condition 实现管程里面的条件变量 Lock和Condition实现的管程,线程等待和通知需要调用awai...

  • Chapater-3 [进程间通讯]

    进程间通信核心概念 互斥的方案 信号量 互斥量 管程 消息传递 屏障 经典的IPC问题 哲学家就餐问题 #defi...

网友评论

      本文标题:管程概念

      本文链接:https://www.haomeiwen.com/subject/qjyymctx.html