`
wing123
  • 浏览: 790129 次
  • 性别: 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的作用,使用说明和例子

    关键字volatile的用途

    在嵌入式编程中,经常会遇到编译器优化问题,对关键字volatile的应用也很频繁,但是绝大多数人都不清楚它的意义与原因,本文将做一个详细介绍

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

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

    C语言中关于关键字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 的理解与正确使用

    本文主要介绍 volatile 的使用准则,以及使用过程中需注意的地方,感兴趣的朋友一起看看吧

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

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

    Java中的关键字volatile详解

    主要介绍了Java中的关键字volatile,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

    主要为大家详细介绍了Java关键字volatile和synchronized的作用和区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    C语言中关键字volatile的用法

    本文介绍了C语言中关键字volatile使用方法、注意事项内容。

    Java中volatile关键字的含义

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

    c语言关键字volatile

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

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

    我们在学习C语言的32个关键字时,大家都不太注意volatile这个关键字,volatile是一个类型修饰符。volatile的中文意思是“易变的”。那么在程序中我们在什么情况下才使用他呢?我们在分析内核时经常看到这个关键字的...

    线程安全在Java中的应用与实践.pptx.pptx

    volatile关键字可以保证变量的可见性,当一个线程修改了volatile变量的值,新值对于其他线程来说是立即可见的,这样可以防止由于线程间的数据不一致导致的问题 Lock接口 Lock接口提供了比synchronized关键字更广泛的...

    解析java中volatile关键字

    主要为大家解析了java中volatile关键字,经常有人把volatile关键字和synchronized或者lock混淆,本文就为大家好好区分,感兴趣的小伙伴们可以参考一下

    C语言中的volatile关键字

    volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。  用volatile关键字声明的变量i每被访问时,执行部件都会从i相应的内存单元中取出i的值。  没有用volatile关键字声明...

    c语言面试题集(单片机)

    6.关键字Volatile 7.位操作(Bit manipulation) 8.访问固定的内存位置(Accessing fixed memory locations) 9.中断(Interrupts) 10.动态内存分配(Dynamic memory allocation) 11.数据类型Typedef 12.晦涩的...

Global site tag (gtag.js) - Google Analytics