首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
JMM与JAVA关键字
订阅
最爱小雅的树为
更多收藏集
微信扫码分享
微信
新浪微博
QQ
12篇文章 · 0订阅
Java并发(5)- ReentrantLock与AQS
在synchronized未优化之前,我们在编码中使用最多的同步工具类应该是ReentrantLock类,ReentrantLock拥有优化后synchronized关键字的性能,又提供了更多的灵活性。相比synchronized,他在功能上更加强大,具有等待可中断,公平锁以及…
彻底理解synchronized
通过字节码分析以及源码解析深入理解synchronized的使用场景以及背后的实现原理,避免在生产环境出现并发问题,
Java 线程通信内存模型 --- 主内存与工作内存
熟悉 Java 内存模型是分析并发问题的基础。
面试必备:Java volatile的内存语义与AQS锁内存可见性[精品长文]
保证此变量对所有线程的可见性,这里的 “可见性”是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。 禁止指令重排序优化。 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量主要…
初识CAS的实现原理
1. CAS简介 CAS的全称是Compare And Swap,翻译过来就是比较并交换。假设内存中数据的值为V,旧的预期值为A,新的修改值为B。那么CAS操作可以分为三个步骤:1)将旧的预期值A与内存中的值V比较;2)如果A与V的值相等,那么就将V的值设置为B;3)返回操作是…
面试官爱问的equals与hashCode
equals和hashCode都是Object对象中的非final方法,它们设计的目的就是被用来覆盖(override)的,所以在程序设计中还是经常需要处理这两个方法的。而掌握这两个方法的覆盖准则以及它们的区别还是很必要的,相关问题也不少。 下面我们继续以一次面试的问答,来考察…
最简单的解释-Java父类和子类的初始化顺序
1. 父类中静态成员变量和静态代码块 2. 子类中静态成员变量和静态代码块 3. 父类中普通成员变量和代码块,父类的构造函数 4. 子类中普通成员变量和代码块,子类的构造函数 其中“和”字两端的按照代码先后顺序执行。
JVM 类加载机制
类从被加载到虚拟机内存开始,到卸载出内存为止,它的生命周期如上图。其中,验证、准备和解析3个部分统称为连接。 加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,而解析则不一定,解析主要目的是将符号引用转换为直接引用,它某些情况可以在初始化以后才开始,这是为了支持java的…
面试必备:Java AQS 实现原理(图文)分析[精品长文]
AQS的实现是基于一个FIFO的等待队列。 使用单个原子变量来表示获取、释放锁状态(final int)改变该int值使用的是CAS。(思考:为什么一个int值可以保证内存可见性?) 子类应该定义一个非公开的内部类继承AQS,并实现其中方法。 AQS支持exclusive与sh…
Java多线程之volatile关键字和内存屏障
前面一篇文章在介绍Java内存模型的三大特性(原子性、可见性、有序性)时,在可见性和有序性中都提到了volatile关键字,那这篇文章就来介绍volatile关键字的内存语义以及实现其特性的内存屏障。 volatile是JVM提供的一种最轻量级的同步机制,因为Java内存模型为…