读写锁(Readers-Writer Lock)顾名思义是一把锁分为两部分:读锁和写锁,其中读锁允许多个线程同时获得,因为读操作本身是线程安全的,而写锁则是互斥锁,不允许多个线程同时获得写锁,并且写操作和读操作也是互斥的。总结来说,读写锁的特点是:读读不互斥、读写互斥、写写互斥。,在 Java 语言中,读写锁是使用 ReentrantReadWriteLock 类来实现的,其中:,它的基础使用如下代码所示:,多个线程可以同时获取到读锁,称之为读读不互斥,如下代码所示:,以上程序执行结果如下:,读锁和写锁同时使用是互斥的(也就是不能同时获得),这称之为读写互斥,如下代码所示:,以上程序执行结果如下:,多个线程同时使用写锁也是互斥的,这称之为写写互斥,如下代码所示:,以上程序执行结果如下:,提高了程序执行性能:多个读锁可以同时执行,相比于普通锁在任何情况下都要排队执行来说,读写锁提高了程序的执行性能。,避免读到临时数据:读锁和写锁是互斥排队执行的,这样可以保证了读取操作不会读到写了一半的临时数据。,读写锁适合多读少写的业务场景,此时读写锁的优势最大。,读写锁是一把锁分为两部分:读锁和写锁,其中读锁允许多个线程同时获得,而写锁则是互斥锁。它的完整规则是:读读不互斥、读写互斥、写写互斥。它适用于多读的业务场景,使用它可以有效的提高程序的执行性能,也能避免读取到操作了一半的临时数据。
© 版权声明
文章版权归作者所有,未经允许请勿转载。