Synchronized和Volatile是并发中的两大关键字,有相似性和不同点。

Synchronized更详细介绍参考https://www.cnblogs.com/spark-cc/p/17069585.html

volatile简单来说就是轻量的同步手段,与Synchronized不同的,volatile不会触发上下文切换,它的并发语义也很简单,保证了JMM的可见性和有序性,注意不保证原子性,而Synchronized比较牛,JMM三种特性都能保证,当然,volatile的运用场景也不多,一般用在变量上,告诉编译器这个变量对全部线程是可见的,或者是变量充当触发器,告诉编译器volatile作用变量周围的代码不能重排序优化。

而Synchronized运行场景就比较多了,还可以细分为对象锁和类锁,作用于变量或者函数,甚至类文件

Synchronized和Volatile的对比的更多相关文章

  1. Java 线程 — synchronized、volatile、锁

    线程同步基础 synchronized 和volatile是Java线程同步的基础. synchronized 将临界区的内容上锁,同一时刻只有一个进程能访问该临界区代码 使用的是内置锁,锁一个时刻只 ...

  2. java多线程系列(五)---synchronized ReentrantLock volatile Atomic 原理分析

    java多线程系列(五)---synchronized ReentrantLock volatile Atomic 原理分析 前言:如有不正确的地方,还望指正. 目录 认识cpu.核心与线程 java ...

  3. 4个点说清楚Java中synchronized和volatile的区别

    作者 : Hollis 回顾一下两个关键字:synchronized和volatile 1.Java语言为了解决并发编程中存在的原子性.可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如sy ...

  4. synchronized和volatile的使用

    synchronized和volatile的使用 一步一步掌握线程机制(三)---synchronized和volatile的使用 现在开始进入线程编程中最重要的话题---数据同步,它是线程编程的核心 ...

  5. java多线程之内存可见性-synchronized、volatile

    1.JMM:Java Memory Model(Java内存模型) 关于synchronized的两条规定: 1.线程解锁前,必须把共享变量的最新值刷新到主内存中 2.线程加锁时,将清空工作内存中共享 ...

  6. synchronized和volatile比较

    synchronized和volatile比较 volatile不需要加锁,比synchronized更轻量级,不会阻塞线程 从内存可见性角度讲,volatile读相当于加锁,volatile写相当于 ...

  7. java并发编程(2) --Synchronized与Volatile区别

    Synchronized 在多线程并发中synchronized一直是元老级别的角色.利用synchronized来实现同步具体有一下三种表现形式: 对于普通的同步方法,锁是当前实例对象. 对于静态同 ...

  8. synchronized与volatile的区别及各自的作用、原理(学习记录)

    synchronized与volatile的区别,它们的作用及原理? 说到两者的区别,先要了解锁提供的两种特性:互斥(mutual exclusion) 和可见性(visibility). 互斥:即一 ...

  9. synchronized和lock以及synchronized和volatile的区别

    synchronized和volatile区别synochronizd和volatile关键字区别: 1. volatile关键字解决的是变量在多个线程之间的可见性:而sychronized关键字解决 ...

  10. 对象回收过程?线程池执行过程? map原理?集合类关系?synchronized 和 volatile ? 同一个类的方法事务传播控制还有作用吗?java 锁

    1.  对象回收过程? 可达性分析算法: 如果一个对象从 GC Roots 不可达时,则证明此对象不可用. 通过一系列称为GC ROOTS的对象作为起点,从这些起点往下搜索,搜索走过的路径 称为引用链 ...

随机推荐

  1. 3MP/5MPNetwork-Camera摄像头默认口令

    网络资产搜索: shodan: 找到5MP-Network-Carema 登陆:admin/a***n End!!!

  2. 【七侠传】冲刺阶段--Day7

    [七侠传]冲刺阶段--Day7 团队成员 20181221曾宇涛 20181202李祎铭 20181209沙桐 20181215薛胜瀚 20181216杨越麒 20181223何家豪 20181232 ...

  3. mangodb查询语句

    1.查询所有记录 db.userInfo.find(); 相当于: select* from userInfo; 默认每页显示20条记录,当显示不下的情况下,可以用it迭代命令查询下一页数据.注意:键 ...

  4. C#TimeSpan时间差转换成分钟和秒数

    public Form1() { InitializeComponent(); aa = DateTime.Now.ToString(); } string aa; private void butt ...

  5. react intl 国际化

    方案描述:由于采用单页面,所以按钮切换时会刷新页面 1.安装 react-intl  babel-plugin-react-intl json-loader npm i react-intl babe ...

  6. 将Vue项目部署到Nginx中,出现的400,405,200响应空等问题处理

    最近用Vue3写了个项目,然后对接后台接口. 在本地vue配置文件中,配置了反向代理.成功请求了后端接口. 自测没有问题. 打包vue,发布到nginx中.运行nginx,成功显示了页面. 当点击页面 ...

  7. 20201003--统计数字字符个数(奥赛一本通 P98 1--字符类型和字符数组)

    输入一行字符,统计出其中数字字符的个数 输入:一行字符串,总长度不超过255 输出:一行,输出字符串里面数字字符的个数. 样例输入:Peking University is set up at 189 ...

  8. Bugku Log4j2 漏洞题目 解题参考

    Log4j2 漏洞题目 题目地址 https://ctf.bugku.com/challenges/detail/id/340.html?page=1 二.攻击环境准备 需要一台linux云服务器,把 ...

  9. LSP原则中的逆变和协变

    在复习过程中,LSP原则是个很重要的内容.这里先给出LSP原则的定义. LSP定义Functions that use pointers or referrnces to base classes m ...

  10. 2月23日javaweb之Maven

    Maven常用命令 compile:编译 clean:清理 test:测试 package:打包 install:安装 Maven生命周期 Maven对项目构建的生命周期描述是一次构建过程经历了多少个 ...