ReentrantReadWriteLock vs synchronized

Mik*_*ike 14 java multithreading

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

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

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

谢谢!

djn*_*jna 23

同步允许一次在一个线程中.

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

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


San*_*rma 15

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

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