通讯设备东莞网站建设,python做网站后台,中山网站建设文化教程,公司网站建设平台根据标准锁的分类
偏向锁 / 轻量级锁 / 重量级锁#xff1b;可重入锁 / 非可重入锁#xff1b;共享锁 / 独占锁#xff1b;公平锁 / 非公平锁#xff1b;悲观锁 / 乐观锁#xff1b;自旋锁 / 非自旋锁#xff1b;可中断锁 / 不可中断锁。
偏向锁 / 轻量级锁 / 重量级锁…根据标准锁的分类
偏向锁 / 轻量级锁 / 重量级锁可重入锁 / 非可重入锁共享锁 / 独占锁公平锁 / 非公平锁悲观锁 / 乐观锁自旋锁 / 非自旋锁可中断锁 / 不可中断锁。
偏向锁 / 轻量级锁 / 重量级锁
偏向锁
故名思就是偏向锁的拥有者就可以直接获得锁开销很小性能最好。
轻量级锁
它是从偏向锁升级到的轻量级锁竞争时间短用CAS实现的并且线程会通过自旋的形式尝试获取锁而不会陷入阻塞。
重量级锁
轻量级锁不满足就会生成重量级锁重量级锁会让其他 申请却拿不到锁的线程进入阻塞状态。
锁发生的顺序无锁→偏向锁→轻量级锁→重量级锁
可重入锁 / 非可重入锁
可重入锁指是线程当前已经持有这把锁了能在不释放这把锁 的情况下再次获取这把锁。 非可重入锁线程获取到锁在不释放的情况下不能再次获取锁。
可重入锁典型的就是ReentrantLock
共享锁 / 独占锁
共享锁可以被多个同时线程获得独占锁是只能被同一个线程获得的。 读写锁的理念正好诠释了共享锁和独占锁读锁是共享说而写锁就是独占锁。
公平锁 / 非公平锁
公平锁是线程排队先到先得不能插队 非公平锁是线程可以插队。
悲观锁 / 乐观锁
悲观锁获取资源之前必须先拿到锁 乐观锁利用 CAS 理念在不独占资源的情况完成了对资源的修改。
自旋锁 / 非自旋锁
利用cpu资源自旋锁是线程自我旋转 非自旋锁是拿不到锁就直接放弃或者进行其他 的处理逻辑例如去排队、陷入阻塞。
可中断锁 / 不可中断锁
可中断锁是一旦线程申请了锁就没有回头路了只能等到拿到锁以后才能进行其他的逻辑处理。 可中断锁是不想获取了可以在中断之后去做其他的事情。 CASCompare and Swap是一种乐观锁技术用于实现并发算法。CAS操作包含三个操作数内存位置、预期原值和新值。在执行CAS操作时如果内存位置的值与预期原值相匹配则处理器会自动将该位置更新为新值如果不匹配则处理器不做任何操作。CAS允许多个线程同时尝试更新同一个变量但只有一个线程能够成功。CAS是实现原子性的关键技术之一可以保证在并发环境下的安全性。CAS操作适用于自旋锁、无锁队列、CAS-based的并发控制等场景。