实际上,有这样的场景:共享资源有一个阅读和写作操作,并且写作操作不像读取操作那样频繁(更多阅读)。当没有操作时,多个线程在同一时间,因此没有问题,因此应允许多个线程同时阅读共享资源(阅读可能很复杂);但是,如果线程想编写这些共享资源,则不应beallow其他线程读取和编写资源(读,写,写和写相互排斥)。在阅读的情况下,读写锁定不仅仅是读取和写作锁比其锁相比,可以提供更好的并发和吞吐量。
为了响应此场景,Java的数据包提供了一个读取-Write锁定的reentrantreadWritelock。它在其中维护了一对相关的锁,一个仅用于阅读操作,称为阅读锁;一个用于写作操作的一种,称为写入锁定锁定描述如下:线程的先决条件输入读取锁:
线程的先决条件进入写作锁:
以下三个重要特征:
阅读了上面的描述后,每个人都可能有点头晕,因此我将举一个以前开发订单的示例,以帮助每个人都理解。我们的订单具有主要和子词的概念:编码的主要顺序是相应的关系是1:n。当我退款时,我需要支持子订单,主要退款。子回报,维度的维度是主要单个退款,维度的维度是可能的,我们可以,我们可以添加读写锁
}
防范措施:
原始:https://juejin.cn/post/7102790951042547726