volatile 与 synchronized 关键字的区别?

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

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

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

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

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

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

相关知识点参考:

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

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

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

如何保证线程安全?

相关文章
|
2月前
|
缓存 编译器
volatile关键字
volatile关键字
|
9月前
|
安全 Java
【Synchronized关键字】
【Synchronized关键字】
|
10月前
|
存储 缓存 Java
volatile 关键字说明
volatile 关键字说明
28 0
|
2月前
|
安全 Java 程序员
synchronized关键字与ReentrantLock的区别和应用
synchronized关键字与ReentrantLock的区别和应用
23 0
|
缓存 Java 编译器
深入理解synchronized关键字
synchronized关键字详解
69 0
|
存储 安全 Java
synchronized关键字讲解
synchronized关键字讲解
synchronized关键字讲解
|
算法 安全 Java
多线程之volatile关键字
多线程之volatile关键字
|
存储 Java
浅谈Volatile关键字
该篇文章用来总结笔者对于Volatile关键字的理解,并不会太过深入的探讨。
109 0
浅谈Volatile关键字
|
存储 缓存 安全
深入理解synchronized关键字(一)
深入理解synchronized关键字(一)
168 0
深入理解synchronized关键字(一)
|
存储 安全 Java
深入理解synchronized关键字(二)
深入理解synchronized关键字(二)
110 0
深入理解synchronized关键字(二)