synchronized 和 volatile 关键字的作用
作用:
一旦一个共享变量(类的成员变量、类的静态成员变量)被 volatile 修饰之后,那么就具备了两层语义:
1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。
2)禁止进行指令重排序。
volatile 本质是在告诉 jvm 当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取;
synchronized 则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。
区别:
1.volatile 仅能使用在变量级别;
synchronized 则可以使用在变量、方法、和类级别的;
2.volatile 仅能实现变量的修改可见性,并不能保证原子性;
synchronized 则可以保证变量的修改可见性和原子性;
3.volatile 不会造成线程的阻塞;
synchronized 可能会造成线程的阻塞;
4.volatile 标记的变量不会被编译器优化;
synchronized 标记的变量可以被编译器优化。
Synchronize和Lock 的区别与用法
synchronized 和 volatile 关键字的作用相关推荐
- 【说一千道一万】volatile关键字的作用和synchronized的关系
[说一千道一万]volatile关键字的作用和synchronized的关系 volatile这个关键字在面试的时候通常会拿出来跟synchronized作比较,这也是比较基础的面试题目,这里自己总结 ...
- volatile关键字的作用、原理
在只有双重检查锁,没有volatile的懒加载单例模式中,由于指令重排序的问题,我确实不会拿到两个不同的单例了,但我会拿到"半个"单例. 而发挥神奇作用的volatile,可以当之 ...
- 一文搞懂Volatile关键字的作用
前言 Volatile关键字的作用主要有如下两个: 1.线程的可见性:当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值. 2. 顺序一致性:禁止指令重排序. 一.线程可见性 我们先通过一个 ...
- Java中的synchronized与volatile关键字
原文出处:http://hukai.me/android-training-course-in-chinese/performance/smp/index.html Java中的"synch ...
- 深入理解并发内存模型||JMM与内存屏障||多核并发缓存架构 ||JMM内存模型||volatile 关键字的作用 ||JMM 数据原子操作||JMM缓存不一致的问题
深入理解并发内存模型||JMM与内存屏障 多核并发缓存架构 JMM内存模型 volatile 关键字的作用 JMM 数据原子操作 JMM缓存不一致的问题
- [实验]-从汇编代码来看volatile关键字的作用
★★★ 个人博客导读首页-点击此处 ★★★ 环境aarch64的交叉编译器 我们将C语言翻译成汇编代码,来看volatile关键字的作用 我们先看一段C语言代码 void udelay(uint64_ ...
- 24.volatile关键字的作用、volatile原理、可见性、内存屏障、volatile性能、transient
24.volatile关键字的作用 24.1.volatile原理 24.2.可见性 24.3.内存屏障 24.4.volatile性能 25.transient 24.volatile关键字的作用 ...
- java volatile关键字的作用_java volatile关键字作用及使用场景详解
1. volatile关键字的作用:保证了变量的可见性(visibility).被volatile关键字修饰的变量,如果值发生了变更,其他线程立马可见,避免出现脏读的现象.如以下代码片段,isShut ...
- 【003】【深入解析Java中volatile关键字的作用】
为什么80%的码农都做不了架构师?>>> Java语言支持多线程,为了解决线程并发的问题,在语言内部引入了同步块synchronized和volatile关键字机制.在java线程并 ...
最新文章
- 关于自注意力机制的思考
- 中国机器人产业发展报告(2018)正式发布!
- NSCoding 的作用
- 推送改变世界!Push提高用户活跃度的三不原则
- JS输出范围内中所有质数
- [目标检测] Faster R-CNN 深入理解 改进方法汇总
- python爬虫模拟登录人人网
- c++创建虚拟串口_linux虚拟串口控制器驱动实现——适用于无开发板学习串口驱动...
- 2013全球移动游戏产业白皮书
- java可以使用python的库函数_java调用python方法总结
- 中国农业大学计算机研究生专业课,中国农业大学2019计算机考研纯干货分享
- 湖南电信拨号上网的某个记录资料
- 第 29 章 电阻触摸屏—触摸画板
- 以太镇火了,快卖掉手中的猫买楼吧
- 南阳理工ACM 题目73 比大小
- JS的DOM操作3--删除事件,注册事件与冒泡⭐⭐⭐(附带动图案例)
- c++中static变量的存储duration
- Yura2020年限量高级定制版阅读进度表
- zabbix监控mysql日志告警_zabbix监控mysql以及报警(二)终
- mySQL中stuff,SQL 中STUFF用法
热门文章
- 外包物料成本核算时的供应商确定
- SAP固定资产的几个关键日期
- php 规格,PHP 设计模式系列之 specification规格模式_PHP
- kong组件_Kong插件开发工具包
- image.helper.php,image.php
- BUUCTF (pwn) bjdctf_2020_YDSneedGrirlfriend(UAF)
- python中 5个带key内置函数
- Python找出列表中出现次数最多的元素三种方式
- python 定制类
- 王者荣耀连接不上服务器最新赛季排名,王者荣耀新赛季连掉三段 初期不能打排位是有原因的...