1.ReadWriteLock
读写分离锁,读锁可以在没有写锁的时候被多个线程同时持有,写锁是独占的。 每次只能有一个写线程,但是同时可以有多个线程并发地读数据。一个获得了读锁的线程必须能看到前一个释放的写锁所更新的内容。 读写锁比互斥锁允许对于共享数据更大程度的并发。ReadWriteLock适用于读多写少的并发情况。
2.condition实现控制多线程执行顺序
java中控制线程通信的传统方式利用synchronized关键字来保证同步,结合wait(),notify(),notifyAll()控制线程通信。不灵活。
使用Condition可以让那些已经得到lock对象却无法继续执行的线程释放lock对象,Condition对象也可以唤醒处于等待的线程。Condition
将 Object
监视器方法(wait
、notify
和 notifyAll
)分解成截然不同的对象, 其中,Lock
替代了 synchronized
方法和语句的使用,Condition
替代了 Object 监视器方法的使用。 Condition
实例实质上被绑定到一个锁上。要为特定 Lock
实例获得 Condition
实例,使用其newCondition()
方法。
await替代wait,signal替代notify,signalAll替代notifyAll。