jdk中的锁分为两种:synchronized关键字和lock接口。
synchronized原理涉及三种锁概念:偏向锁、轻量级锁、重量级锁,本质是个锁升级(膨胀)的过程,由此保证了synchronized关键字当前的高性能。
偏向锁:若对象只有1个线程请求,将锁直接分配给该线程;
轻量级锁:若对象有2个线程请求,线程竞争时的等待使用cas(自旋锁、乐观锁的概念);
重量级锁:若对象被2个以上的线程请求,出现竞争时将阻塞等待中的线程;
lock接口的原理是工具:aqs(队列同步器),aqs的三个组成部分:状态、队列、cas,lock接口的实现类包括:重入锁、读写锁,涉及到锁的概念:公平/非公平锁、共享/排他锁,如:读锁之间共享、读写互斥。
公平锁:由队列实现,保证公平性;
重入锁:由状态实现;
jdk中的锁
最新推荐文章于 2024-03-13 10:30:40 发布