volatile和synchronized的区别是什么?

简介: volatile和synchronized的区别
  • volatile只能使用在变量上;而synchronized可以在类,变量,方法和代码块上。
  • volatile至保证可见性;synchronized保证原子性与可见性。
  • volatile禁用指令重排序;synchronized不会。
  • volatile不会造成阻塞;synchronized会。
相关文章
|
4月前
|
缓存 Java 编译器
volatile与synchronized
volatile与synchronized
37 0
|
4月前
|
安全 Java 程序员
synchronized关键字与ReentrantLock的区别和应用
synchronized关键字与ReentrantLock的区别和应用
21 0
|
10月前
|
安全 Java 编译器
volatile 与 synchronized 关键字的区别?
volatile 与 synchronized 关键字的区别?
42 0
|
11月前
|
缓存 安全 Java
Java并发编程中的四个关键字:ThreadLocal、Volatile、Synchronized和Atomic
Java并发编程中的四个关键字:ThreadLocal、Volatile、Synchronized和Atomic
227 0
|
12月前
|
缓存 Java 编译器
并发编程-06线程安全性之可见性 (synchronized + volatile)
并发编程-06线程安全性之可见性 (synchronized + volatile)
68 0
volatile 和synchronized的目的
volatile保证可见性的原理是在每次访问变量时都会进行一次刷新,因此每次访问都是主内存中最新的版本。所以volatile作用之一就是保证变量修改的实时可见性。
|
SQL 缓存 安全
synchronized和volatile底层原理分析
CAS Compare And Swap (Compare And Exchange) / 自旋 / 自旋锁 / 无锁 因为经常配合循环操作,直到完成为止,所以泛指一类操作 cas(v, a, b)
76 0
java多线程关键字volatile、lock、synchronized
volatile写和volatile读的内存语义: 1. 线程A写一个volatile变量,实质上是线程A向接下来将要读这个volatile变量的某个线程发出了(其对共享变量所在修改的)消息。 2. 线程B读一个volatile变量,实质上是线程B接收了之前某个线程发出的(在写这个volatile变量之前对共享变量所做修改的)消息。 3. 线程A写一个volatile变量,随后线程B读这个volatile变量,这个过程实质上是线程A通过主内存向线程B发送消息。
261 0
|
Java 编译器
volatile与synchronized 区别
volatile与synchronized 区别
|
存储 缓存 算法
volatile synchronized cas
之前写了《熔断》,以及其中使用的《计数器算法》;本来是要接着再写不通过定时器清理计数环的计数器算法,看了下我司亿级网关的计数器,百行的代码,但却是满满bug。不得穿插一下并发的基础知识 处理并发,最基本的元件就这三样 1. synchronized 这个关键字不必讲,从开始多线程,它就进入你的视线 2. volatile 在jdk5之后大放异彩 3. cas 在J.U.C中大量使用,他与volatile组合是J.U.C的基石
126 0
volatile synchronized cas