Lock专题
2021-04-26 19:14:28 0 举报
AI智能生成
lock
作者其他创作
大纲/内容
线程要不要锁住同步资源?
锁住
悲观锁
不锁住
乐观锁
锁住同步资源失败,线程要不要阻塞?
阻塞
不阻塞
自旋锁
多个线程竞争同步资源的流程细节有没有区别?
不锁住资源,多个线程只能有一个修改资源成功,其他线程会重试
无锁
同个线程执行同步资源时自动获取资源
偏向锁
多个线程竞争同步资源时,没有获取资源的线程自旋等待锁释放
轻量级锁
多个线程竞争同步资源时,没有获取资源的线程阻塞等待唤醒
重量级锁
多个线程竞争锁时要不要排队?
排队
公平锁
先尝试插队,插队失败再排队
非公平锁
一个线程中的多个流程能不能获取同一把锁
能
可重入锁
不能
非可重入锁
多个线程能不能共享一把锁
能
共享锁
不能
排他锁
锁优化策略
标志位修改等可见性场景优先使用volatile
数值递增场景优先使用Atomic原子类
数据允许多副本场景优先使用读写锁
读多写少需要加锁的场景优先使用读写锁
尽可能减少线程对锁的占用时间
尽可能减少线程对数据加锁的粒度(分段加锁)
尽可能按照不同场景拆分对锁功能的使用
避免在循环中频繁加锁
尽量减少高并发场景中线程对锁的争用
0 条评论
下一页