java synchronized VS volatile
2016-03-22 00:00
465 查看
摘要: java synchronized VS volatile
synchronized
1、原子性(同步)(保证同一时间内同步块内的代码只能被一个线程所访问)
2、内存可见性(当共享变量值改变后,能及时被其他线程看见)
注:
线程解锁前,必须把共享变量的最新值刷新到主内存中
线程加锁时,将清空工作内存中共享变量的值,从而使用共享变量时需要从主内存中重新读取最新的值(加锁和解锁需要同一把锁)
volatile
1、线程每次使用volatile变量时,它都强迫线程从主内存中读取最新的值
2、当volatile变量的值发生改变的时候,它就会强迫线程把最新的值刷新到主内存中
synchronized
1、原子性(同步)(保证同一时间内同步块内的代码只能被一个线程所访问)
2、内存可见性(当共享变量值改变后,能及时被其他线程看见)
注:
线程解锁前,必须把共享变量的最新值刷新到主内存中
线程加锁时,将清空工作内存中共享变量的值,从而使用共享变量时需要从主内存中重新读取最新的值(加锁和解锁需要同一把锁)
volatile
1、线程每次使用volatile变量时,它都强迫线程从主内存中读取最新的值
2、当volatile变量的值发生改变的时候,它就会强迫线程把最新的值刷新到主内存中
相关文章推荐
- Java遍历删除
- Spring整合JMS(一)——基于ActiveMQ实现
- Java并发编程:volatile关键字解析
- 40个Java多线程问题总结
- Maven新建项目更改默认JDK版本
- 从头认识java-特辑-foreach在java里面两种实现原理总结
- 学java时遇到的一些小问题
- JAVA 基础 final关键字
- Java对象的序列化和反序列化
- java基础学习02(简单的java程序)
- SpringBoot配置log4j输出日志
- 3.20 JAVA
- String.getBytes()& JAVA编码转换的详细过程
- java——基础02
- Java基础小结
- Java的心路历程——杂谈向
- spring mvc4使用及json 日期转换解决方案
- Myeclipse 快捷键设置和自动提示设置
- Spring 源码分析(四) ——MVC(一)Web 基础
- JDK和JRE的区别