volatite 简述
来源:互联网 发布:太阁立志传5mac修改器 编辑:程序博客网 时间:2024/06/04 19:49
一. volatite 简述
Java 语言提供了一种稍弱的同步机制,即 volatile 变量.用来确保将变量的更新操作通知到其他线程,保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新. 当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的.
二. volatite 线程安全?
volatile 变量对所有线程是立即可见的,对 volatile 变量所有的写操作都能立即反应到
其他线程之中,换句话说:volatile 变量在各个线程中是一致的,所以基于 volatile 变量的运算是线程安全的.
这句话论据貌似没有错,论点确实错的.
三. volatite 为什么是线程不安全的?
public class VolatileTest{ public static volatile int i; public static void increase(){ i++; }}
javap -c -l VolatileTest.class
public class VolatileTest { public static volatile int i; public VolatileTest(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."<init>":()V 4: return LineNumberTable: line 1: 0 public static void increase(); Code: 0: getstatic #2 // Field i:I, 把i的值取到了操作栈顶,volatile保证了i值此时是正确的. 3: iconst_1 4: iadd // increase,但其他线程此时可能已经把i值加大了好多 5: putstatic #2 // Field i:I ,把这个已经out of date的i值同步回主内存中,i值被破坏了. 8: return LineNumberTable: line 6: 0 line 7: 8}
0 0
- volatite 简述
- 初识volatite
- 关键字volatite
- Volatite 关键字
- 关键字volatite的用法
- Java volatite 关键字的理解
- JUnit简述
- OrientX 简述
- 个人简述
- 操作系统简述
- JUnit简述
- 路由器简述
- RUNDLL32简述
- RMI简述
- Servlet简述
- JDBC简述
- AJAX简述
- Log4j简述
- 测试之apache batch (简称ab测试)
- spring学习笔记(基础篇)
- NYOJ 650
- centos安装jdk8,安装IntelliJ Idea
- C#委托的学习
- volatite 简述
- 数据结构——17 二叉树(递归)
- 使用xcode storyboard设置按钮圆角方法
- MATLAB的基本运算以及常识
- JavaScript如何获取节点
- 导航框架 frame
- MyEclipse 内存不足问题解决方案
- 黄阶低级 - 《 数据结构》- 01-A - 修改0次
- iOS开发小结 - AFNetworking的Post失败,关于requestSerializer的正确使用