020_Lock和Condition


传统synchronized

未用同步方法时

image.png
image.png
image.png
image.png

使用同步方法时

image.png
image.png

Lock接口

:::info
ReentrantLock 可重入锁(常用)
ReentrantReadWriteLock.ReadLock 读锁
ReentrantReadWriteLock.WriteLock 写锁
:::
image.png
image.png
:::info
lock() 加锁
unlock() 解锁
:::
image.png
:::info
NonfairSync 非公平锁:十分不公平,可以插队
FairSync 公平锁:十分公平,先来先执行(默认)
:::

应用测试

image.png
image.png
image.png

Synchronized和Lock的区别

image.png

Synchronized版-生产者和消费者问题

image.png
image.png
image.png
image.png

Lock版-生产者和消费者问题

image.png
image.png
image.png
image.png
image.png
image.png

Condition 精准的通知和唤醒线程

:::info
condition.await(); // 等待
condition.signal(); // 唤醒指定线程
:::
image.png
image.png
image.png
image.png
image.png

posted @ 2022-11-15 20:59  清风(学习-踏实)  阅读(30)  评论(0)    收藏  举报