`
wing123
  • 浏览: 796658 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关键字volatile

    博客分类:
  • Java
 
阅读更多

synchronize建立内存屏障,使其能够抑制内存指令的重排序,从而使并发程序达到我们想像中的逻辑。volatile简化了synchronized,原理是一样的
在增加了volatile后,那个变量所使用的位置就立起了一道 内存屏障,前后的指令顺序都不可打乱。

 

public class test1 {
    int a = 0;

    volatile int b = 0;

    class Thread1 implements Runnable {

 public void run() {
     a = 1;

     b = 2;

 }

    }

    class Thread2 implements Runnable {
 public void run() {
     if (b == 2)

     {

  System.out.println(a); // 这个a会是多少?

     }

 }
    }

    public static void main(String[] args) {
 new test1().launch();
    }

    public void launch() {
 new Thread1().run();
 new Thread2().run();
    }

}

 

分享到:
评论

相关推荐

    C语言中关键字volatile的作用

    C语言中关键字volatile的作用,使用说明和例子

    C语言中关于关键字volatile的用法

    在C语言中,关键字volatile是一个非常重要的修饰符,它在程序设计中起着不可替代的作用。volatile的主要目的是告诉编译器,它所修饰的变量是易变的,可能会在程序的控制之外被改变。因此,编译器在优化代码时,不能...

    C语言关键字volatile(易变的)表示不经过赋值,其值也可能被改变

    "C语言关键字volatile(易变的)表示不经过赋值,其值也可能被改变" C语言关键字volatile(易变的)是一种特殊的关键字,用于告诉编译器,该变量的值可能会在程序执行期间发生变化,甚至在不经过赋值的情况下。这种...

    关键字volatile的用途

    ### 关键字volatile的用途 #### 一、volatile的基本概念 在嵌入式系统开发过程中,程序员经常会遇到一些变量的值可能会被意外修改的情况。这些情况可能是由硬件操作、多线程并发执行或是中断服务程序导致的。为了...

    Java 关键字 volatile 的理解与正确使用

    Java 关键字 volatile 的理解与正确使用 Java 语言中关键字 volatile 被称作轻量级的 synchronized,与 synchronized 相比,volatile 编码相对简单且运行时的开销较少,但能够正确合理地应用好 volatile 并不是那么...

    探讨C语言中关键字volatile的含义

    volatile 的意思是“易失的,易改变的”。...关键字volatile有什么含意?并给出三个不同的例子。 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。

    何为C语言关键字volatile

    在程序员面试宝典中提到“关键字volatile的面试例题是考查嵌入式编程”,中间有一段解析:  回答不出这个问题的人是不会被雇佣的。我认为这是区分C程序员和嵌入式系统程序员的基本的问题。搞嵌入式的家伙们经常同...

    java volatile 关键字实战

    java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java volatile 关键字实战java ...

    Java中的关键字volatile详解

    Java中的关键字volatile详解 一、volatile关键字原理 在Java中,volatile关键字经常用来修饰变量。volatile关键字的作用是使变量在多个线程之间可见。volatile关键字可以保证变量的可见性,但不能保证变量的原子性...

    Java关键字volatile和synchronized作用和区别

    Java关键字volatile和synchronized作用和区别 Java关键字volatile和synchronized是Java语言中两个常用的关键字,它们都是用来解决多线程编程中的同步问题的,但它们的作用和用法却有所不同。 volatile关键字是变量...

    C语言中关键字volatile的用法

    C语言中关键字volatile的用法 摘要:本文详细介绍了C语言中关键字volatile的用法、注意事项和注意点,包括volatile关键字的定义、用法、优化器对volatile变量的处理、volatile变量的例子、volatile关键字的含义,...

    Java中volatile关键字的含义

    在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候可以万事大吉。  Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 ...

    c语言关键字volatile

    嵌入式系统开发中,经常用到volatile 和const关键字,本文针对这2个关键字的基本用法,进行讲解

    详解C中volatile关键字

    详解C中volatile关键字 volatile关键字是C语言中一个重要的关键字,它对变量的声明在不同编译环境下可能造成不同的结果。volatile关键字的作用是提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序...

    EDA/PLD中的何为C语言关键字volatile

    在计算机编程语言C中,`volatile` 是一个重要的关键字,特别是在EDA(电子设计自动化)和PLD(可编程逻辑器件)领域以及嵌入式系统编程中。`volatile` 关键字的作用是告诉编译器,变量的值可能会在程序运行过程中被...

    你了解C语言中的关键字volatile吗?

    在C语言中,`volatile` 是一个非常重要的关键字,但却常常被初学者忽视。它作为一个类型修饰符,用于指示变量的值可能在编译器无法察觉的情况下发生变化,从而避免编译器进行某些优化可能导致的错误。`volatile` 的...

    深入理解 volatile 关键字.doc

    深入理解volatile关键字 volatile关键字是Java语言的高级特性,它可以保证可见性和禁止指令重排序,但是要弄清楚其工作原理,需要先弄懂Java内存模型。 保证可见性 volatile关键字可以保证可见性,即当一个线程...

    C语言中关键字const、static、volatile、extern、auto、register的用法分析.doc

    C语言中关键字const、static、volatile、extern、auto、register的用法分析 本文将对C语言中的六个关键字:const、static、volatile、extern、auto、register进行详细的分析和解释。 一、const关键字 Const关键字...

    解析java中volatile关键字

    Java中的`volatile`关键字是多线程编程中的一个重要概念,它的主要作用是解决并发环境下的可见性和有序性问题。在Java内存模型(JMM)中,每个线程都有自己的工作内存,其中包含了线程对共享变量的副本。线程间的...

Global site tag (gtag.js) - Google Analytics