共计 325 个字符,预计需要花费 1 分钟才能阅读完成。
操作系统在面对线程间同步的时候,会支持例如 semaphore 信号量和 mutex 互斥量等同步原语,而 monitor 是在编程语言中被实现的,下面介绍一下 java 中 monitor 的实现原理:
以一个阻塞队列的实现来举例:
同时,java 内置的 synchronized 关键字可以认为是 MESA 模型的简化版,其只能有一个条件变量,但编译器会自动添加加锁与解锁的代码。synchronized 关键字可以修饰实例方法、类方法以及代码块,如果修饰的是代码块,需要制定关联的 Object;如果修饰的是实例方法,那么其关联的对象实际上是 this;如果修饰的是类方法,那么其关联的对象是 this.class。这些关联的对象就是 MESA 模型里的条件变量。
管程:并发编程的万能钥匙
正文完
发表至: java
2019-06-16