ReentrantReadWriteLock

ReentrantReadWriteLock可重入读写锁分析
ReentrantReadWriteLock读写锁的使用

  • 没有加锁就释放锁,会引起异常:java.lang.IllegalMonitorStateException: attempt to unlock read lock, not locked by current thread
ReentrantReadWriteLock rwl=new ReentrantReadWriteLock();
rwl.readLock().unlock();
  • 获得写锁之前没有释放读锁,会造成阻塞,即《高性能MySQL》上说的“读锁不能插入到写锁的前面”
rwl.readLock().lock();
System.out.println("abc1");
rwl.writeLock().lock();
System.out.println("abc2");

以上代码输出“abc1”,然后阻塞

  • 一个写锁请求可以插在读锁队列的前面
rwl.writeLock().lock();
System.out.println("abc2");
rwl.readLock().lock();
System.out.println("abc3");

以上代码输出“abc2”,“abc3”,然后虚拟机正常结束

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容