美文网首页
带你搞懂Java多线程(六)

带你搞懂Java多线程(六)

作者: 爺珍爱那颗心 | 来源:发表于2020-01-06 14:39 被阅读0次

带你搞懂Java多线程(一)
带你搞懂Java多线程(二)
带你搞懂Java多线程(三)
带你搞懂Java多线程(四)
带你搞懂Java多线程(五)

前面介绍的都是排他锁(独占锁),下面我们来介绍以下读写锁

ReadWriteLock接口和读写锁ReentrantReadWriteLock

  • 允许同一时刻有多个线程进行访问ReentrantReadWriteLock实现了ReadWriteLock接口。
  • ReadWriteLock接口中有两把Lock锁,从而实现同一时刻只允许读线程或者写线程进行操作。
  • 通过将读写锁进行分离,从而非常多的提高性能。

使用方法如下

private final ReadWriteLock lock = new ReentrantReadWriteLock();
//拿到读锁
private final Lock getLock = lock.readLock();
//拿到写锁
private final Lock setLock = lock.writeLock();
//使用和Lock一样注意将unlock()放在finally中
getLock.lock();
try{
}finally{
  getLock.unlock();
}

在应用中,读写操作的比例大概为十比一,而且读的操作是可以同时进行,并且不允许写操作,但写操作时是不允许其他操 作的,从而保证了安全性。

Condition接口

用来实现等待通知的效果,相当于syn里的notify和notifyAll。
与syn不同用Lock和Condition实现等待通知大多数时候推荐使用signal而不是signalAll(根据业务选择选择)

相关文章

  • 带你搞懂Java多线程(五)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四) ...

  • 带你搞懂Java多线程(六)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四)带...

  • 带你搞懂Java多线程(四)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三) 什么是线程间的协作 线程之间...

  • 带你搞懂Java多线程(三)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二) 什么是线程间的共享 Java支持多个线程同时访问一个对象...

  • 带你搞懂Java多线程(二)

    带你搞懂Java多线程(一) Java里的线程 Java里的程序天生就是多线程的 启动线程的方式 ①扩展Threa...

  • 带你搞懂Java多线程(一)

    什么是多线程 多线程也叫并发编程,那么在写多线程之前,我们先来了解一下并发编程的基础概念。①CPU核心数和线程数的...

  • 线程、多线程和线程池,看完这些你就能全部搞懂了

    摘要:一文带你搞懂线程、多线程和线程池。 本文分享自华为云社区《一文搞懂线程与线程池[https://bbs.hu...

  • 带你搞懂Java反射

    什么是反射 在运行时才知道要操作的类是什么,并且可以在运行时获取类的完整构造,并调用对应方法。 反射的缺点 因为反...

  • 带你搞懂Java线程池

    什么是线程池 把线程进行池化,调用的时候直接去池里面去取,而不是每次去重新创建,不用的时候放回线程池,而不是直接销...

  • 带你搞懂Java泛型

    什么是泛型 参数化的类型:将需要传入的属性,进行参数化,实际调用时才指定传入的数据类型。 为什么要用泛型 同样的一...

网友评论

      本文标题:带你搞懂Java多线程(六)

      本文链接:https://www.haomeiwen.com/subject/cawfactx.html