1 粒度不同,前者针对变量 ,后者锁对象和类
2 syn阻塞,volatile线程不阻塞
3 syn保证三大特性,volatile不保证原子性
4 syn编译器优化,volatile不优化 volatile具备两种特性:

1.保证此变量对所有线程的可见性,指一条线程修改了这个变量的值,新值对于其他线程来说是可见的,但并不是多线程安全的。
2.禁止指令重排序优化。

Volatile如何保证内存可见性:

1.当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量刷新到主内存。
2.当读一个volatile变量时,JMM会把该线程对应的本地内存置为无效。线程接下来将从主内存中读取共享变量。

同步:就是一个任务的完成需要依赖另外一个任务,只有等待被依赖的任务完成后,依赖任务才能完成。
异步:不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,只要自己任务完成了就算完成了,被依赖的任务是否完成会通知回来。(异步的特点就是通知)。 打电话和发短信来比喻同步和异步操作。
阻塞:CPU停下来等一个慢的操作完成以后,才会接着完成其他的工作。
非阻塞:非阻塞就是在这个慢的执行时,CPU去做其他工作,等这个慢的完成后,CPU才会接着完成后续的操作。
非阻塞会造成线程切换增加,增加CPU的使用时间能不能补偿系统的切换成本需要考虑。

Volatile和Synchronized四个不同点:相关推荐

  1. volatile 和 synchronized 详解

    一.背景 提起并发编程,我们不得不说起 volatile 和 synchronized 这两个关键字,这两个关键字也是面试中常常被问到的,下面我们分别介绍一下这两个关键字以及二者的异同 首先我们先理解 ...

  2. 打工人,从 JMM 透析 volatile 与 synchronized 原理

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 在面试.并发编程.一些开源框架中总是会遇到 volatil ...

  3. JAVA多线程之volatile 与 synchronized 的比较

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:hapjin cnblogs.com/hapjin/p/54 ...

  4. 【多线程学习笔记】sychronized关键字底层原理、sychronized与ReentrantLock、volatile和synchronized

    文章目录 sychronized释义 synchronized关键字最主要的三种使用方式: synchronized底层原理: 同步代码块: 同步方法 当前类的class对象作为锁 锁升级 Synch ...

  5. Java 并发编程CAS、volatile、synchronized原理详解

    CAS(CompareAndSwap) 什么是CAS? 在Java中调用的是Unsafe的如下方法来CAS修改对象int属性的值(借助C来调用CPU底层指令实现的): /*** * @param o ...

  6. 从 JMM 透析 volatile 与 synchronized 原理

    作者 | 李健青 来源 | 码哥字节(ID:MageByte) 头图 |  CSDN 下载自东方IC 在面试.并发编程.一些开源框架中总是会遇到 volatile 与 synchronized .sy ...

  7. ThreadLocal、Volatile、synchronized、Atomic关键字扫盲

    前言 对于ThreadLocal.Volatile.synchronized.Atomic这四个关键字,我想一提及到大家肯定都想到的是解决在多线程并发环境下资源的共享问题,但是要细说每一个的特点.区别 ...

  8. java中的volatile和synchronized

    参考:http://blog.csdn.net/wanghai__/article/details/6260178 这个可能是最好的对比volatile和synchronized作用的文章了.vola ...

  9. 多图 | 搞懂volatile和synchronized的区别

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「日拱一兵」 之前写了几篇 Java并发 ...

最新文章

  1. HTML的标签描述13
  2. boost::hana::Comparable用法的测试程序
  3. kafka报错与调试技巧
  4. 【转】基于easyui开发Web版Activiti流程定制器详解(一)——目录结构
  5. java语言就业方向_2019年汉语言专业最全就业方向
  6. 在ASP.NET页面中添加确认对话框的方法
  7. Hanlp-地名识别调试方法详解
  8. Docker镜像使用详解
  9. OMRON欧姆龙驱动器维修R88D-KT06F-Z过压故障处理
  10. 解决天正M_批打印没有天正的打印格式(TArch20V6.ctb)的问题
  11. SSM整合-内涵基本SSM开发基本结构框架
  12. 支付订单中未付款倒计时
  13. Java中的switch
  14. 基础语法值c++提高编程
  15. SpringBoot+vue邮箱登录(附带多种效验)
  16. FXTZ 1.10 小爱使用
  17. [CS229学习笔记] 5.判别学习算法与生成学习算法,高斯判别分析,朴素贝叶斯,垃圾邮件分类,拉普拉斯平滑
  18. hive 经纬度距离计算方法
  19. 计算机英语作文50词左右带翻译,英语作文50词带翻译
  20. Linux课堂练习1

热门文章

  1. 老友记第二季3集背诵句
  2. Nodejs批量处理图片小工具:批量修改图片信息
  3. 动物鸿蒙的图片,自然界五种秃顶动物:红色秃猴和皮包猪(图)
  4. Unable to negotiate with 192.168.7.203 port 22: no matching key exchange method found. Their offer:
  5. 鸿蒙系统连接家电,美的鸿蒙家电正式上线!华为鸿蒙系统,你很快就能用上!...
  6. 抓紧赶上ChatGPT这股风,错过这次不知道还有没有下一次
  7. Flask服务端模板(Jinja2) SSTI 注入漏洞
  8. Revit中如何编程实现窗口缩放视图
  9. Grafika 生成图片 字体不生效
  10. python画双y轴图时,两y轴分别设置数值显示范围