管程(Moniter): 并发编程的基本心法( 二 )
MESA 模型
在管程的发展史上 , 先后出现过三种不同的管程模型 , 分别是:Hasen
模型、Hoare
模型和 MESA
模型 。 其中 , 现在广泛应用的是 MESA
模型 , 并且 Java
管程的实现参考的也是 MESA
模型 。 所以今天我们重点介绍一下MESA
模型 。
在并发领域 , 有两个核心问题:一个是互斥 , 一个是同步 。 管程就是来解决这两个问题的 。
-
互斥:同一时刻只允许一个线程访问共享资源 。
-
同步:线程之间如何通信、协作 。
管程互斥与同步实现
它的思路很简单 , 将共享变量以及对共享变量的操作统一封装起来 。 如下图所示 , 管程 A 将共享变量 data 和相关的操作入队enq
、出队deq
封装起来 。 线程 A 和线程 B想访问共享变量 data , 只能通过调用管程提供的
推荐阅读
- 手机游戏|LOL手游女主播遭遇网暴,停播一周并发文求饶,长得漂亮有错吗?
- 华为|华为“后遗症”并发?谁也没想到,深埋7年“地雷”被英国引爆?
- 并发经验八年架构师:带你轻松解决缓存在高并发场景下的问题
- 2020最新500道Java高岗面试题:数据库+微服务 +SSM+并发编程+..
- 疫情过后,Java开发者如何应对多线程与高并发面试题目?提高自身竞争力
- Java多线程与并发之ThreadLocal
- BAT一线互联网常考面试题:Spring+并发编程+JVM+设计模式+Redis
- 微软宣布在2030年实现碳负排放,并发布计划时间表
- Java架构-高并发的解决方案
- 高并发服务器架构--SEDA架构分析