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关键 ...
随机推荐
- Interview website
https://www.interviewcake.com http://www.leetcode.com
- Springmvc responsebody 返回对象属性 是date日期格式时 如何返回给前台自己想要的形式
1添加依赖 <!-- Jackson Json处理工具包 --> <dependency> <groupId>org ...
- 使用Eclipse创建Maven Web工程
方法/步骤 1 使用Eclipse创建Maven Web工程 2 找到Maven Project,点击Next 3 勾选上Create a simple project (不使用骨架),Next 4 ...
- .Container与.container_fluid区别
.Container与.container_fluid是bootstrap中的两种不同类型的外层容器,两者的区别是:.container 类用于固定宽度并支持响应式布局的容器..container-f ...
- sed的应用
h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...
- InfoPath错误,此文档库已被重命名或删除
在使用InfoPath发布表单,发布到SharePoint服务器报错,如下介绍: 环境:Windows 2012 DateCenter + Sql 2012 + SharePoint 2013 + O ...
- iOS 自定义方法 - 播放GIF
示例代码 ///////////////////////第一种/////////////////////// //// GifView.h// GIFViewer//// Created by ...
- iOS10 适配问题-Xcode8
前段时间升级了Xcode8,整体来说对OC的影响不大,但是还是跳一个坑,消耗了不少时间.这里总结下遇到的适配问题. 1.权限问题 Xcode8 访问相机.相册等需要权限的地方崩溃 解决办法: 在使用私 ...
- java中IO流异常处理
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...
- Apache的详细安装教程和遇到的问题解决方案
Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一 (一)Apache安装软件下载 1.访问 ...