java锁
2020-04-24 15:21:47 0 举报
AI智能生成
java锁机制
作者其他创作
大纲/内容
线程是否要锁住同步资源
锁住
悲观锁
synchronized
lock
不锁住
乐观锁
CAS三个问题
ABA问题
循环开销大
只能保证一个共享变量的原子操作
锁住同步资源失败,线程是否要阻塞
阻塞
不阻塞
自旋锁(避免线程切换的开销)
自旋次数
自旋时间
适应性自旋锁
次数不固定(由前一次在同一个锁的自旋时间决定)
synchronized(非公平,可冲入)
synchronized的加锁机制
Java对象头简介
Mark Word(标记字段)
Klass Pointer(类型指针)
Monitor
synchronized的四种锁形态
不锁住资源,多个线程中只有一个
能修改资源成功,其他线程需要重试
能修改资源成功,其他线程需要重试
无锁
同一个线程执行资源时,自动获取同步资源
偏向锁
多个线程获取同步资源时,没有获取到资源的线程自旋等待资源释放
轻量级锁
多个线程获取同步资源时,没有获取资源的线程阻塞等待唤醒
重量级锁
多个线程竞争锁时是否要排队
要排队
公平锁
先尝试插队,插队失败再排队(默认的,效率相对较高)
非公平锁
一个线程的多个流程是否能多次获取同一把锁
能
可重入锁
不能
不可重入锁
多个线程能否共享同一把锁
能
共享锁
不能
排他锁
收藏
收藏
0 条评论
下一页