关于wait和notify/lock的心得
2019-07-28 本文已影响0人
华木公子
一 使用注意
wait和notify必须在获取锁的情况下才能适用,否则会抛非法监控异常;
所以代码块必须在 synchronized 的执行体中执行才行。
二 使用的方式
wait就是为了说明当前线程后续逻辑先不执行,需要等待其他线程执行后再执行。
wait和notify成对出现,表明当前线程执行完后需要通知其他线程来执行。
三 reentantlock 的使用
lock和unlock对应于synchronized,只是更为灵活。
tryLock尝试获取锁;
tryLock(long)尝试一定时间内获取锁;
condition.await() 用法于 wait 相同;
condition.signal() 用法与 notify相同;
四 reentrantLockReadWriteLock 的用法
主要是用于读写逻辑分开的场景,读写分开就会存在多线程并发读,并发写,并发读写。因此分别用readLock和writeLock可以更细粒度的控制多线程并发读写