Java-Monitor管程

操作系统在面对线程间同步的时候,会支持例如semaphore信号量和mutex互斥量等同步原语,而monitor是在编程语言中被实现的,下面介绍一下java中monitor的实现原理:

以一个阻塞队列的实现来举例:

同时,java内置的synchronized关键字可以认为是MESA模型的简化版,其只能有一个条件变量,但编译器会自动添加加锁与解锁的代码。synchronized关键字可以修饰实例方法、类方法以及代码块,如果修饰的是代码块,需要制定关联的Object;如果修饰的是实例方法,那么其关联的对象实际上是this;如果修饰的是类方法,那么其关联的对象是this.class。这些关联的对象就是MESA模型里的条件变量。

管程:并发编程的万能钥匙

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理