java 锁和监视器理解

锁:类似平常门的锁,你获取这个锁,说明你有钥匙,可以进去这个屋子了,是你有权限进入了

监视器:类似门里的房间,进去不代表你可以见真正的主人,你先得在候客厅等着,拍着队一大堆,有人说,候客厅来一个,你们中就出来一个,拿了一个工牌,跟者进入的会客厅,和主人谈完话了,你把工牌留下,就走了。这是等候客厅继续喊,继续拿牌来会见。

锁和监视器主要是多线程而生的。两个线程修改共享信息,信息就会不准确。

线程先要获取锁,才能进入房间,当他想正要获取的时候,知道其他线程已经获取了,该线程进入等待区,这和锁和监视器是两个概念矛盾啊。

是不是可以这样理解

多线程程竞争锁,有一个拿到锁了,然后可以获取监视器,然后持有监视器,然后释放监视器,退出监视器

而其他没有获取锁的竞争线程,他们都在竞争这个锁,说明是一路货色,都想干这单生意,但有先有后。他们只能在等那个先拿到锁的线程,这些线程就进入了候客厅(entry-set),等到有机会了,在干活。

入建筑中的那个特别的房间叫做"获得监视器",占据房间叫做"持有监视器",离开房间叫做"释放监视器",离开建筑叫做"退出监视器".   
  而一个锁就像一种任何时候只允许一个线程拥有的特权.   

猜你喜欢

转载自blog.csdn.net/csdn_littlefish/article/details/84792323