voliate和synchronized
线程安全考虑三个方面:原子性,可见性,有序性
为什么使用voliate关键字?
正常情况下编译器为了加快程序运行的速度,对一些变量的写操作会先在寄存器或者是CPU缓存上进行,最后才写入内存.而在这个过程,变量的新值对其他线程是不可见的.而volatile的作用就是使它修饰的变量的读写操作都必须在内存中进行!
- voliate和synchronized区别
- volatile本质是在告诉jvm当前变量在寄存器中的值是不确定的,需要从主存中读取,synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住.
- volatile仅能使用在变量级别,synchronized则可以使用在变量,方法.
- volatile仅能实现变量的修改可见性,但不具备原子特性,而synchronized则可以保证变量的修改可见性和原子性.
- volatile不会造成线程的阻塞,而synchronized可能会造成线程的阻塞.
- volatile标记的变量不会被编译器优化,而synchronized标记的变量可以被编译器优化.
voliate和synchronized相关推荐
- 1、Java中“并发编程”详解【voliate、synchronized、JMM内存模型、原子类操作Atomic..、CAS原理】
文章目录 1.对volatile 的理解? JMM(Java 内存模型) JMM模型的三大特性: 禁止指令排序 线程安全性保证 你在哪些地方用到过 volatile?单例 2.CAS 你知道吗?CAS ...
- 2018百度秋招一面/二面/三面
1.int和integer所占字节,int .new integer.integer区别,大于128的时候有什么区别. int.integer所占字节为4字节. 1. int 和Integer在进行比 ...
- java voliate_Java之voliate, synchronized, AtomicInteger使用
1: voliate 用在多线程,同步变量. 线程为了提高效率,将成员变量(如A)某拷贝了一份(如B),线程中对A的访问其实访问的是B.只在某些动作时才进行A和B的同步.因此存在A和B不一致的情况.v ...
- voliate Synchronized Lock
参考文章:https://blog.csdn.net/huyiju/article/details/97126274 一.voliate相关 1:java内存模型 1.1:计算机的内存模型 在计算机的 ...
- java中变量 关键字_基于java的voliate关键字详解
voliate关键字的作用: 一.内存可见性 基于缓存一致性协议,当用voliate关键字修饰的变量改动时,cpu会通知其他线程,缓存已被修改,需要更新缓存.这样每个线程都能获取到最新的变量值. 二. ...
- voliate解决重排序
voliate关键字的两个作用 1. 保证变量的可见性:当一个被volatile关键字修饰的变量被一个线程修改的时候,其他线程可以立刻得到修改之后的结果.当一个线程向被volatile关键字修饰的变量 ...
- voliate工作实际应用场景
哈喽大家好,我是IT老哥,今天我们来讲讲面试必问的voliate 单线程的情况下呢,我们肯定用不到这个voliate 只有在多线程的情景下才能用到,文章结尾我会举一个经典的案例 voliate三特性 ...
- 【java线程】锁机制:synchronized、Lock、Condition
[Java线程]锁机制:synchronized.Lock.Condition 原创 2013年08月14日 17:15:55 标签:Java /多线程 74967 http://www.infoq. ...
- java static 可见性_Java多线程 synchronized与可见性的关系以及可见性问题总结
作者:七里香的编程之路 出自:OSCHINA 原文:my.oschina.net/u/4098550/blog/4548274 能保证可见性的措施 除了volatile 可以让变量保证可见性外.hap ...
最新文章
- mysql的突然变成本地不能用密码,远程要用密码才能登录,这是神马情况???求解...
- Docker-tag
- tomcat(19)Manager应用程序的servlet类
- 【渝粤题库】广东开放大学 婚姻家庭法 形成性考核
- 求最小公倍数与最大公约数(C语言)
- Linux OPENSSL的简单用法
- 「代码随想录」62.不同路径【动态规划】详解!
- kvm+libvirt虚拟机快照浅析[转]
- H3CIE(WLAN)学习笔记(4)——PHY层协议
- module ‘cv2‘ has no attribute ‘face‘已安装仍报错解决
- 笔记本电脑当作服务器外置显示器,我们为什么要给笔记本外接显示器,真的是多此一举?...
- 创建达梦到Oracle的DBLINK(OCI方式)
- 微星 GL62M 7RD SSD+HDD双硬盘 安装双系统(win10+ubuntu 16.04)
- 2021下半年软考案例分析试题及答案解析
- 美国大学计算机科学专业排名2019,2019年美国大学计算机专业排名
- flutter 顶部状态栏透明
- vscode预览.mad文件
- 电信4g网速测试软件,移动联通电信三大运营商4G网速测试,仅供非专业人士参考...
- 无人帆船模拟及实船实验步骤
- DMIScope 1.00.005 注册版
热门文章
- EAS 服务器安装与环境配置
- echarts 世界地图标点_Echarts自定义实现标点地图
- 玄幻小说--仙界修仙
- 【 华为OD机试 2023】 查找充电设备组合/最接近最大输出功率的设备 (C++ Java JavaScript Python 100%)
- 别抱怨吃不到好吃的,教你几个小妙招
- Matlab求解规划问题之 fmincon函数
- DirectX 11游戏编程学习笔记之1: 开场白
- 随机性检测之游程总数测试
- A5论坛 - http://www.a5lt.com/
- golang获取一年前,一月前,一天前的时间