volatile修饰符
Volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
一个volatile对象引用可能是null。
(1)Java程序代码
package niukewang;
public class volatile_Test {
public static void main(String args[]) {
MyRunnable r = new MyRunnable();
Thread t1 = new Thread(r);
t1.start();
try {
Thread.sleep(2);
r.stopThread();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class MyRunnable implements Runnable {
private volatile boolean active;
public void run() {
active = true;
while (active) // 第一行
{
// 代码
System.out.println("Print the line");
}
}
public void stopThread() {
System.out.println("Set to false");
active = false; // 第二行
}
}
只有当调用stopThread时候,设置了ative为false的时候,然后线程获取了false的值,会停止第一行中内容的输出。
(2)输出结果。
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Print the line
Set to false
Print the line
volatile修饰符的更多相关文章
- Java 的 volatile 修饰符
volatile 修饰符,用于多线程同步 volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值.而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存.这 ...
- Java中volatile修饰符,不稳定标记的用法笔记
今天学java特性时,发现了volatile修饰符,这个修饰符修饰的变量告诉java编译器忽略优化机制,这样的优势是: java优化后,寄存器会缓存内存里的变量,另一个线程修改这个变量的内存时,不会同 ...
- java中Volatile修饰符的含义
在java语言中:为了获得最佳速度,同意线程保存共享成员变量的私有拷贝.并且仅仅当线程进入或者离开同步代码块时才与共享成员变量的原始值进行对照. volatilekeyword的作用就是提示vm:对于 ...
- 关于STM32库中 __IO 修饰符(volatile修饰符,反复无常的意思)
STM32例子代码中会有像这样的代码 static __IO uint32_t TimingDelay; 这里边的__IO修饰符不好理解,单从字面可以看出是为IO相关,查其标准库可以得知这个__IO ...
- STM32库中 __IO 修饰符(volatile修饰符)
STM32例子代码中会有像这样的代码 static __IO uint32_t TimingDelay; 这里边的__IO修饰符不好理解,单从字面可以看出是为IO相关,查其标准库可以得知这个__IO原 ...
- volatile 修饰符的有过什么实践?
一种实践是用 volatile 修饰 long 和 double 变量,使其能按原子类型来读写. double 和 long 都是 64 位宽,因此对这两种类型的读是分为两部分的,第一次 读取第一个 ...
- 三个线程,ABC 10次(volatile+synchronized(2 synchronized可以保证内存可见性,所以去掉status 的volatile修饰符)
package ThreadABC; public class MyThread extends Thread { public static int status = 0; @Override pu ...
- 转: 【Java并发编程】之五:volatile变量修饰符—意料之外的问题(含代码)
转载请注明出处: volatile用处说明 在JDK1.2之前,Java的内存模型实现总是从主存(即共享内存)读取变量,是不需要进行特别的注意的.而随着JVM的成熟和优化,现在在多线程 ...
- 【Java并发编程】:volatile变量修饰符
volatile用处说明 在JDK1.2之前,java的内存模型实现总是从主存(即共享内存)读取变量,是不需要进行特别的注意的.而随着JVM的成熟和优化,现在在多线程环境下volatile关键 ...
随机推荐
- Canvas的width,height 和 样式中Canvas的width,height
控制Canvas的大小,有两种方式: 1:直接设置Canvas标签上的书width,height属性值; 2:通过Css设置Canvas的width,height; 这两种方式,区别是很大的. 1:C ...
- 我的屌丝giser成长记-研二篇
之前有提到过的,本来按照计划中,研一结束就该去深圳中科院研究所实习的,之前跟里面师兄说好了的,奈何导师又接到一个新的科研研究项目,跟学院的几个其他老师一起合作的,主要是关于土地流转系统,而且是一个挺大 ...
- xcode8 storyboard 控件显示错位
升级xcode8 后选择device 为6s 出现上面的情况,控件显示异常.使用Update Frame 显示正常.不能选择Update Constraints 如果误选 commend + Z ...
- iOS 中的 HotFix 方案总结详解
相信HotFix大家应该都很熟悉了,今天主要对于最近调研的一些方案做一些总结.iOS中的HotFix方案大致可以分为四种: WaxPatch(Alibaba) Dynamic Framework(Ap ...
- Git从码云Clone代码到本地
Git从码云或者Github 克隆代码到本地 1.下载安装Git,傻瓜式下一步下一步即可... 2.配置Git: 2.1.选择你要clone到本地的路径:右键--->$ Git Bash Her ...
- 【代码笔记】iOS-UILable高度自适应(sizeWithFont)
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...
- ddd 聚合根 之 聚合与不聚合 设计
聚合 不聚合 订单和订单明细 论坛主贴与贴子回复 订单和收货地址(vo)
- MapReduce工作流多种实现方式
学习 hadoop,必不可少的就是编写 MapReduce 程序.当然,对于简单的分析程序,我们只需一个 MapReduce 任务就能搞定,然而对于比较复杂的分析程序,我们可能需要多个Job或者多个M ...
- Java 消息摘要 散列 MD5 SHA
package xxx.common.util; import java.math.BigInteger; import java.security.MessageDigest; import jav ...
- SQL语句中的where 1=1 和0=1
摘自:http://blog.sina.com.cn/s/blog_afe616ab0101camd.html SQL where 1=1 和0=1的作用 where 1=1; 这个条件始终为True ...