并发编程 管程

本文将介绍并发编程中的管程概念。

一、什么是管程?

管程,Monitor,指的是管理共享变量使它们支持并发的操作过程。

管程是并发编程中的共享资源访问控制模型。

二、MESA 模型

在管程的发展史上,先后出现过三种不同的管程模型,分别是:Hasen 模型、Hoare 模型、MESA 模型。

目前被广泛使用且被 Java 参考的模型是 MESA 模型。

  • 所有线程访问时,都需要先拥有 Monitor(锁)
  • 当线程发现执行某操作需要的条件不满足时,它需要进入该条件对应的等待队列
  • 当线程所需的条件重新满足时,它会被唤醒,并重新进入入口等待队列,尝试获取锁

参考

  • Java 并发编程实战