ReentrantReadWriteLock vs synchronized

我们应该何时使用ReentrantReadWriteLock与Java中multithreading环境中的synchronized关键字进行比较?

使用ReentrantReadWriteLock而不是Java中的同步有什么好处?

任何人都可以给出一个例子(在Java中)吗?

谢谢!

同步允许一次一个线程。

读/写锁允许同时在多个读取器中,但只有在没有编写器的情况下才允许。因此,在某些使用场景下,我们可以获得更好的并发性,因为读者群可以一起进行。

Java API 文档给出了集合类的示例,这些集合类应该具有比编写器更多的读者。

Brian的锁定文章详细解释了每种方法的优缺点。

Lock框架是同步的兼容替代品,它提供了许多不同步提供的function,以及在争用情况下提供更好性能的实现。 然而,这些明显的好处的存在并不足以让ReentrantLock更加同步。 相反,根据您是否需要ReentrantLock的强大function做出决定。 在绝大多数情况下,您不会 – 同步工作正常,适用于所有JVM,可以被更广泛的开发人员理解,并且不易出错。 在您真正需要时保存锁定。 在那些情况下,你会很高兴你拥有它。