栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第280天学习打卡(知识点回顾 volatile和synchronized的区别)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第280天学习打卡(知识点回顾 volatile和synchronized的区别)

知识点回顾 volatile 和synchronized的区别
  • volatile 是告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要去主内存中读取;synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞
  • volatile仅能使用在变量级别;synchronized则可以使用在变量、方法和类级别
  • volatile仅能使用在变量的修改可见性,不保证原子性;synchronized可以使用在变量、方法和类级别
  • volatile不会造成线程阻塞;synchronized可能会造成线程阻塞
  • volatile 标记的变量不会被编译器优化;synchronized标记的变量可以被编译器优化
  • 仅使用volatile并不能保证线程安全;synchronized则可以实现线程的安全性,因为线程的安全取决于原子性和可见性

volatile:是java虚拟机提供的轻量级的同步机制

  • 保证可见性
  • 不保证原子性(就有可能出现写丢失的情况)
  • 禁止指令重排

synchronized 是关键字属于jvm层面

  • 不需要用户手动释放锁
  • 不可中断
  • 非公平
  • 不可以绑定多个条件Condition
  • 是可重入锁

https://www.bilibili.com/video/BV18b411M7xz?p=52&spm_id_from=pageDriver

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/328605.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号