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. 我的第三次JAVA作业

    ------------恢复内容开始------------ 1.对象与对象引用的区别是什么? 请举例说明 创建对象被分配在堆中,对象引用分配在栈中. eg. new FighterPlane(); ...

  2. idea 部署项目到 docker 运行

    1.在远程服务器上开启 docker 远程连接 $vim /usr/lib/systemd/system/docker.service # ExecStart=/usr/bin/dockerd -H ...

  3. Treewidget节点的删除

    父节点的删除 // 第一种 // 树状列表父节点的删除 // 有点莽 不支持这种操作 delete ui->treeWidget->topLevelItem(0); //  第二种 QTr ...

  4. SelectionSort,选择排序,C++实现

    1 // g++ selection_sort.cc -Wall -O3 -std=c++11 && ./a.exe 2 3 4 #include <iostream> 5 ...

  5. midway 框架学习

    最近 和别人一块运维 开源 产品,后台需要用到 midway框架,所以进行学习. 首先就是midway的搭建, 首先 npm init midway ,初始化项目,选择 koa-v3 template ...

  6. File类----> FileFilter接口:实现方法

    1创建一个类 继承 FileFilter接口 在类中重写boolean accept方法 写出要实现的条件2在main方法中创建File对象 代表了D盘File file = new File(&qu ...

  7. C# 定时任务模拟,请求二十万数据

    定时器请求二十万数据 最近遇到一个问题,api接口,因为数据内容转换处理.一页1万条数据处理速度3秒以上.假设二十万条数据,分页请求二十次,总共花费时间1分钟以上. 解决这个问题,我第一时间想到并发, ...

  8. Ansys-CHEMKIN-pro表面反应机制输入(Surface Kinetics Input)规则

    chemkin表面反应机制文件(Ansys-CHEMKIN-pro表面反应机制输入) 1. 文件包含表面活性位(相).表面组分,固相组分.固相,热力学数据,反应机制: 2. 顺序:物质名称,活性位数据 ...

  9. 02 HTML基础-图片和音视频

    1.HTML中的图片 HTML5的<figure>和<figcaption>为图片提供了一个语义容器,在标题和图片之间建立了清晰的联系.<figcaption>元素 ...

  10. WinForm中的MVC模式--MVP模式

    本文主要介绍MVC模式在WINFORM中的实现,其实砖家们都称它为MVP模式,小弟E文不太好,真的是记不住那个P怎么拼写的.. MVC模式主要解决的问题就是将表示层和业务层进行分离,在以往做WINFO ...