Java的的ReentrantReadWriteLock请求
-
11-09-2019 - |
题
只是在爪哇(尤其是实施的ReentrantReadWriteLock)ReadWriteLocks,因为我不觉得太阳文档快速的问题清楚了。
如果读锁是由一个线程时写锁被另一个请求举行,会发生什么? 是否写入锁定线程必须等待所有目前持有读锁被释放? 另外,做新的读锁请求被阻塞,直到写锁被授予和释放?
由于
解决方案
的Javadoc解释这样的:
此类不强加的读取器 或作者偏好排序为 锁的访问。然而,它支持 可选的公平 政策。当公平构造, 线程使用争进入 近似到达顺序的策略。 当写锁被释放 无论是等待时间最长的单 作家将被分配写 锁定,或者如果有读者等待 比任何作家长,集 读者将被分配读 锁。当非公平构建, 项的顺序锁需要 不在到达顺序。在这两种 情况下,如果读者是积极和 作家进入锁定则没有 随后的读者将获得 读锁,直到后作家 已获得并发布了写 锁。
如果读锁是由一个线程时写锁被另一个请求举行,会发生什么?是否写入锁定线程必须等待所有目前持有读锁被释放?
是的,笔者将不得不等待。但是,这只能等待目前保持的读取锁定。任何以后到达的读者会后作家队列。
另外,做新的读锁请求被阻塞,直到写锁被授予和释放?
是
其他提示
一个ReadWriteLock
不能在相同的时间读锁保持的写锁。为,请求说,当一个读锁定被保持会导致阻塞或失效的写锁。
不隶属于 StackOverflow