//volatile 保证线程变量的透明
public class Volatil {
volatile int x =0; //线程共有内存变量,可获取最后一次写的值
private int y = 0;
private void write() {
x = 5;
y = 1;
}
private void read() {
int dummy = y;
while (x != 5) {
System.out.println("..." + y + " dummy=" + dummy); //dummy与y的值不相等
}
}
public static void main(String[] args) throws Exception {
final Volatil v = new Volatil();
Thread t1 = new Thread(
new Runnable() {
public void run() {
v.write();
}
}
);
Thread t2 = new Thread(
new Runnable() {
public void run() {
v.read();
}
}
);
t2.start();
t1.start();
t1.join();
t2.join();
System.out.println("x="+v.x + " y="+v.y);
System.out.println("***** over ***");
}
}
相关推荐
主要为大家详细介绍了Java多线程之volatile域,Java 语言提供了一种稍弱的同步机制,即volatile,本文为大家解答,感兴趣的小伙伴们可以参考一下
volatile是JVM提供的一种最轻量级的同步机制,因为Java内存模型为volatile定义特殊的访问规则,使其可以实现Java内存模型中的两大特性...这篇文章主要介绍了Java多线程之volatile关键字及内存屏障,需要的朋友可以参考下
主要介绍了Linux C中多线程与volatile变量的相关资料,需要的朋友可以参考下
● JMM的关键技术点都是围绕着多线程的原⼦性、可⻅性和有序性来创建的。所以,下⾯我们来⼀⼀ 介绍这三种特性。原子性、可见性、有序性。 正常情况下,如果我们不使⽤volatile,那么每条线程都会有⾃⼰的缓存,当...
4. Java多线程学习(三)volatile关键字 5. Java多线程学习(四)等待/通知(wait/notify)机制 6. Java多线程学习(五)线程间通信知识点补充 7. Java多线程学习(六)Lock锁的使用 8. Java多线程学习(七)...
volatile关键字相信了解Java多线程的读者都很清楚它的作用。volatile关键字用于声明简单类型变量,下面看一下为什么要慎重使用volatile关键字
深入探讨Java多线程中的volatile变量共6页.pdf.zip
我是一名很普通的双非大三学生。...多线程之volatile 说起volatile,肯定少不了Java内存模型,Java内存模型(Java Memory Model,JMM)是Java虚拟机规范定义的,用来屏蔽掉java程序在各种不同的硬件和操作
主要为大家详细并深入的探讨Java多线程中的volatile变量,volatile用来确保将变量的更新操作通知到其他线程,保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新,感兴趣的小伙伴们可以参考一下
Java多线程(Synchronized+Volatile+JUC 并发工具原理+线程状态+CAS+线程池)
Java线程:volatile关键字 Java线程:新特征-线程池 Java线程:新特征-有返回值的线程 Java线程:新特征-锁(上) Java线程:新特征-锁(下) Java线程:新特征-信号量 Java线程:新特征-阻塞队列 Java线程:...
详细的讲述了多线程的各种用法 Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠...
主要介绍了Java多线程 volatile关键字详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主要介绍了java多线程volatile内存语义解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
本篇文章提供了20道高难度的Java多线程编程面试题及详细解析,旨在帮助开发者展示出卓越的并发编程能力。在当今高并发的应用场景下,对多线程编程的理解和应用是评估面试者的重要指标。通过这些高难度问题,您将全面...
Java 多线程与并发(5_26)-关键字_ volatile详解
三、 volatile关键字 38 四、 使用synchronized关键字要注意以下四点 39 五、 关于同步和锁定的一些问题 41 Java线程:并发协作-线程的交互 47 Java线程:并发协作-生产者消费者模型 52 Java线程:并发协作-死锁 55 ...
主要介绍了java多线程中的volatile和synchronized用法分析,以实例的形式分析了在多线程中volatile和synchronized的用法区别与使用原理,具有一定的参考借鉴价值,需要的朋友可以参考下