黑马JVM总结(三十六)

(1)CAS-概述

cas是配合volatile使用的技术 ,对共享变量的安全性要使用synachonized加锁,但是CAS不加锁,它是使用where(true)的死循环,里面compareAndSwap尝试把结果赋值给共享变量,赋值的同时呢,会把旧值跟共享变量当前的值做一个比较,因为他怕在写入结果的时候,有其他线程把已经把共享变量改了,这两个值是一致的就把结果成功的写入共享变量里去,如果不一致,放回false,重新进入where循环

(2)CAS-底层

CAS底层使用Unsafe类来实现的

(3)CAS-原子类

它是采用无锁并发的方式保证原子整数信息的并发安全

(4)synchronized-优化

jdk6之后呢底层对synchronized做了优化,性能得到提升,某些场景下比CAS更好,它采用轻量级锁,偏向锁,等等提升性能

标记位:就是标记你加了偏向锁啊还是轻量级锁重量级锁啊

根据锁的类型存储重量级锁的指针啊,锁记录的指针啊

(5)synchronized-轻量级锁

相关推荐
CLX05053 分钟前
CSS如何制作响应式图片集布局_利用object-fit填充空间
jvm·数据库·python
2303_8212873813 分钟前
SQL如何进行分组后字符串拼接_使用GROUP_CONCAT或STRING_AGG
jvm·数据库·python
weixin_4597539416 分钟前
CSS文本渲染在不同操作系统差异_使用font-smoothing平滑化
jvm·数据库·python
AI人工智能+电脑小能手23 分钟前
【大白话说Java面试题 第58题】【JVM篇】第18题:讲一下三色标记
java·开发语言·jvm
2401_824697661 小时前
mysql添加索引导致插入变慢怎么办_索引优化与异步处理方案
jvm·数据库·python
2401_824697661 小时前
Go语言如何写负载均衡器_Go语言负载均衡器实战教程【完整】
jvm·数据库·python
m0_733565461 小时前
CSS如何快速微调项目的间距大小_使用CSS变量批量修改值
jvm·数据库·python
woxihuan1234561 小时前
如何为禁用按钮添加点击提示信息
jvm·数据库·python
ㄟ留恋さ寂寞1 小时前
Golang怎么限制请求Body大小_Golang如何防止客户端发送过大的请求体【避坑】
jvm·数据库·python
老纪1 小时前
CSS Flex布局中如何实现导航栏与Logo的左右分布_利用justify-content- space-between
jvm·数据库·python