只是在爪哇(尤其是实施的ReentrantReadWriteLock)ReadWriteLocks,因为我不觉得太阳文档快速的问题清楚了。

如果读锁是由一个线程时写锁被另一个请求举行,会发生什么? 是否写入锁定线程必须等待所有目前持有读锁被释放? 另外,做新的读锁请求被阻塞,直到写锁被授予和释放?

由于

有帮助吗?

解决方案

的Javadoc解释这样的:

  

此类不强加的读取器   或作者偏好排序为   锁的访问。然而,它支持   可选的公平   政策。当公平构造,   线程使用争进入   近似到达顺序的策略。   当写锁被释放   无论是等待时间最长的单   作家将被分配写   锁定,或者如果有读者等待   比任何作家长,集   读者将被分配读   锁。当非公平构建,   项的顺序锁需要   不在到达顺序。在这两种   情况下,如果读者是积极和   作家进入锁定则没有   随后的读者将获得   读锁,直到后作家   已获得并发布了写   锁。


  

如果读锁是由一个线程时写锁被另一个请求举行,会发生什么?是否写入锁定线程必须等待所有目前持有读锁被释放?

是的,笔者将不得不等待。但是,这只能等待目前保持的读取锁定。任何以后到达的读者会后作家队列。

  

另外,做新的读锁请求被阻塞,直到写锁被授予和释放?

其他提示

一个ReadWriteLock不能在相同的时间读锁保持的写锁。为,请求说,当一个读锁定被保持会导致阻塞或失效的写锁。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top