volatile 与 synchronized 关键字的区别?

简介: volatile 与 synchronized 关键字的区别?

(1)volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取;synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。

(2)volatile仅能使用在变量级别synchronized则可以使用在变量、方法、和类级别的。

(3)volatile仅能实现变量的修改可见性,并不能保证原子性synchronized则可以保证变量的修改可见性和原子性。

(4)volatile不会造成线程的阻塞synchronized可能会造成线程的阻塞。

(5)volatile标记的变量不会被编译器优化synchronized标记的变量可以被编译器优化。

相关知识点参考:

volatile 的作用是什么?能保证原子性吗?能保证有序性吗?

线程两种加锁方式:synchronized 锁与 ReentrantLock 锁的区别

介绍一下 synchronized 关键字对于锁的一些优化?

如何保证线程安全?

目录
打赏
0
0
0
0
1
分享
相关文章
基于autojs7的亚丁号点淘辅助
基于autojs7的亚丁号点淘辅助
157 0
什么是块级元素和内联元素?
【5月更文挑战第24天】什么是块级元素和内联元素?
148 4
Java 中的 JIT 和 AOT
我们都知道,Java 是一种半编译型,半解释型的语言,其编译部分和 C++ 语言比较类似,解释部分和 Python 语言比较类似,而 Java 则是综合了两种方式的语言。
519 1
汇编指令学习(ADD,SUB,MUL,DIV,XADD,INC,DEC,NEG)
汇编指令学习(ADD,SUB,MUL,DIV,XADD,INC,DEC,NEG)
289 0
Java预览及打印PDF的三种方法
Java预览及打印PDF的三种方法
4435 1
Java预览及打印PDF的三种方法
阿里云张建锋:工业互联网应用将更多由生产线工人开发
阿里云张建锋:工业互联网应用将更多由生产线工人开发
127 0
阿里云连续两年位居Gartner®网络防火墙挑战者象限
日前,国际咨询机构Gartner发布了2022年度网络防火墙魔力象限《Magic Quadrant™ for Network Firewalls 2022》,阿里云凭借云防火墙及其执行力和前瞻性连续2年进入“挑战者“象限。
阿里云连续两年位居Gartner®网络防火墙挑战者象限
构造函数和原型链详解
在典型的OOP语言中(如Java),都存在类的概念,类就是对象的模板,对象就是类的实例,但在ES6之前,JS中并没有引入类的概念。
157 0
构造函数和原型链详解
【算法学习】02.03. 删除中间节点(java / c / c++ / python / go / rust)
若链表中的某个节点,既不是链表头节点,也不是链表尾节点,则称其为该链表的「中间节点」。 假定已知链表的某一个中间节点,请实现一种算法,将该节点从链表中删除。 例如,传入节点 c(位于单向链表 a->b->c->d->e->f 中),将其删除后,剩余链表为 a->b->d->e->f
【算法学习】02.03. 删除中间节点(java / c / c++ / python / go / rust)
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问