`

多线程之volatile

    博客分类:
  • java
阅读更多

 

//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域,Java 语言提供了一种稍弱的同步机制,即volatile,本文为大家解答,感兴趣的小伙伴们可以参考一下

    Java多线程之volatile关键字及内存屏障实例解析

    volatile是JVM提供的一种最轻量级的同步机制,因为Java内存模型为volatile定义特殊的访问规则,使其可以实现Java内存模型中的两大特性...这篇文章主要介绍了Java多线程之volatile关键字及内存屏障,需要的朋友可以参考下

    Linux C中多线程与volatile变量

    主要介绍了Linux C中多线程与volatile变量的相关资料,需要的朋友可以参考下

    并发编程基础知识,java内存模型及多线程、volatile

    ● JMM的关键技术点都是围绕着多线程的原⼦性、可⻅性和有序性来创建的。所以,下⾯我们来⼀⼀ 介绍这三种特性。原子性、可见性、有序性。 正常情况下,如果我们不使⽤volatile,那么每条线程都会有⾃⼰的缓存,当...

    多线程系列相关的技术要点

    4. Java多线程学习(三)volatile关键字 5. Java多线程学习(四)等待/通知(wait/notify)机制 6. Java多线程学习(五)线程间通信知识点补充 7. Java多线程学习(六)Lock锁的使用 8. Java多线程学习(七)...

    java多线程编程之慎重使用volatile关键字

    volatile关键字相信了解Java多线程的读者都很清楚它的作用。volatile关键字用于声明简单类型变量,下面看一下为什么要慎重使用volatile关键字

    深入探讨Java多线程中的volatile变量共6页.pd

    深入探讨Java多线程中的volatile变量共6页.pdf.zip

    Java实习生面试复习(八):volatile的学习

    我是一名很普通的双非大三学生。...多线程之volatile 说起volatile,肯定少不了Java内存模型,Java内存模型(Java Memory Model,JMM)是Java虚拟机规范定义的,用来屏蔽掉java程序在各种不同的硬件和操作

    深入探讨Java多线程中的volatile变量

    主要为大家详细并深入的探讨Java多线程中的volatile变量,volatile用来确保将变量的更新操作通知到其他线程,保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新,感兴趣的小伙伴们可以参考一下

    Java多线程(Synchronized+Volatile+JUC 并发工具原理+线程状态+CAS+线程池)

    Java多线程(Synchronized+Volatile+JUC 并发工具原理+线程状态+CAS+线程池)

    Java多线程编程总结

    Java线程:volatile关键字 Java线程:新特征-线程池 Java线程:新特征-有返回值的线程 Java线程:新特征-锁(上) Java线程:新特征-锁(下) Java线程:新特征-信号量 Java线程:新特征-阻塞队列 Java线程:...

    java多线程编程总结

    详细的讲述了多线程的各种用法 Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠...

    Java多线程 volatile关键字详解

    主要介绍了Java多线程 volatile关键字详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    java多线程volatile内存语义解析

    主要介绍了java多线程volatile内存语义解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Java 多线程编程面试集锦20道问题解答Java多线程编程高难度面试题及解析

    本篇文章提供了20道高难度的Java多线程编程面试题及详细解析,旨在帮助开发者展示出卓越的并发编程能力。在当今高并发的应用场景下,对多线程编程的理解和应用是评估面试者的重要指标。通过这些高难度问题,您将全面...

    Java 多线程与并发(5-26)-关键字- volatile详解.pdf

    Java 多线程与并发(5_26)-关键字_ volatile详解

    java多线程笔记

    三、 volatile关键字 38 四、 使用synchronized关键字要注意以下四点 39 五、 关于同步和锁定的一些问题 41 Java线程:并发协作-线程的交互 47 Java线程:并发协作-生产者消费者模型 52 Java线程:并发协作-死锁 55 ...

    java多线程中的volatile和synchronized用法分析

    主要介绍了java多线程中的volatile和synchronized用法分析,以实例的形式分析了在多线程中volatile和synchronized的用法区别与使用原理,具有一定的参考借鉴价值,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics