栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Volatile和synchronized的底层实现原理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Volatile和synchronized的底层实现原理

Volatile的实现原理 字节码层面

加了ACC_VOLATILE

JVM层面

volatile内存区的读写 都加屏障
比如 volatile int i;
当我们i++的时候,i++相当于把i先读出来,给这个读操作上下加一个屏障,写操作上下也加一个屏障,这读操作和写操作是没有同步的,同时也是volatile替代不了synchronized的原因

OS和硬件层面

window:lock指令实现

synchronized的实现原理 字节码层面

如果是方法,直接加ACC_SYNCHRONIZED
如果是同步语句块:
有两个MonITOREXIT ,有一个是用于异常退出的
MonITORENTER ~ MonITOREXIT ~ MONITOREXIT

JVM层面

C C++ 调用了操作系统提供的同步机制

OS和硬件层面

X86:lock cmpxchg / xxxx (用来锁定指定的,不让其他指令来更改)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759552.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号