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