Java 中的三种锁:synchronized、ReentrantLock 和 ReadWriteLock
-
'synchronized' 锁:使用 'synchronized' 关键字对共享资源进行加锁,同时只能有一个线程访问,其他线程需要等待锁释放后才能访问。'synchronized' 锁存在的问题是无法中断等待线程、无法设置超时时间。
-
'ReentrantLock' 锁:java.util.concurrent.locks.ReentrantLock 是 Java SE 5 引入的新锁机制,提供了与 'synchronized' 类似的功能,但是更加灵活。它支持可重入锁、可响应中断、可设置超时等特性。'ReentrantLock' 还支持公平锁和非公平锁两种模式,公平锁保证线程获取锁的顺序与线程等待锁的顺序一致。
-
'ReadWriteLock' 锁:java.util.concurrent.locks.ReadWriteLock 是一个读写锁,它允许多个线程同时读共享资源,但只允许一个线程写共享资源。'ReadWriteLock' 机制分为读锁和写锁,读锁是共享锁,多个线程可以同时获取读锁,写锁是独占锁,只有一个线程可以获取写锁。因此,使用 'ReadWriteLock' 能够提高读操作的并发性,而写操作仍然是互斥的。
原文地址: https://www.cveoy.top/t/topic/m9tE 著作权归作者所有。请勿转载和采集!