知识大全 java的volatile与多线程

Posted 变量

篇首语:弓背霞明剑照霜,秋风走马出咸阳。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 java的volatile与多线程相关的知识,希望对你有一定的参考价值。

  Java语言规范中指出 为了获得最佳速度 允许线程保存共享成员变量的私有拷贝 而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比

  Volatile修饰的成员变量在每次被线程访问时 都强迫从共享内存中重读该成员变量的值 而且 当成员变量发生变化时 强迫线程将变化值回写到共享内存 这样在任何时刻 两个不同的线程总是看到某个成员变量的同一个值

  下面是个例子 恢复注释的任何一处都可以实现同步 就是让程序停下来

  Java代码

  import ncurrent TimeUnit;

  // Broken! How long would you expect this program to run ?

  public class StopThread

  //  private static volatile   boolean stopRequested;  // value: false

  private static   boolean stopRequested;  // value: false

  public static void main(String args) throws InterruptedException

  Thread backgroundThread = new Thread(new Runnable()

  public synchronized  void test ()

  

  @Override

  public void run()

  int i = ;

  while(!stopRequested)

  //                  test();

  i++;

  

  

  );

  backgroundThread start();

  TimeUnit SECONDS sleep( );

  stopRequested = true;

  

  

  当然最容易理解的是用同步的方法

  Java代码

  import ncurrent TimeUnit;

  // Broken! How long would you expect this program to run ?

  public class StopThread

  private static boolean stopRequested;  // value: false

  public static synchronized void requestStop()

  stopRequested = true;

  

  public static synchronized boolean stopRequested()

  return stopRequested;

  

  public static void main(String args) throws InterruptedException

  Thread backgroundThread = new Thread(new Runnable()

  @Override

  public void run()

  int i = ;

  while(!stopRequested())

  i++;

  

  );

  backgroundThread start();

  TimeUnit SECONDS sleep( );

  requestStop();

  

cha138/Article/program/Java/gj/201311/27280

相关参考

知识大全 JAVA高级:多核线程-volatile原理与技巧[1]

JAVA高级:多核线程-volatile原理与技巧[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 JAVA高级:多核线程-volatile原理与技巧[2]

JAVA高级:多核线程-volatile原理与技巧[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 JAVA高级:多核线程-volatile原理与技巧[4]

JAVA高级:多核线程-volatile原理与技巧[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 JAVA高级:多核线程-volatile原理与技巧[3]

JAVA高级:多核线程-volatile原理与技巧[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 java多线程的volatile关键字

  以前一直没在意一直以为volatile修饰了就高枕无忧了但其实不然最简单的一个场景  publicclassCounter  publicvolatilestaticintcount=;  pub

知识大全 Java 理论与实践: 正确使用 volatile 变量 线程同步

Java理论与实践:正确使用volatile变量线程同步  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 慎重使用volatile关键字

Java多线程初学者指南(6):慎重使用volatile关键字  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 多核线程-volatile原理与技巧

  为什么使用volatile比同步代价更低?  同步的代价主要由其覆蓋范围决定如果可以降低同步的覆蓋范围则可以大幅提升程序性能  而volatile的覆蓋范围仅仅变量级别的因此它的同步代价很低  v

知识大全 深入解析PHP中的(伪)多线程与多进程

深入解析PHP中的(伪)多线程与多进程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本篇文章是对P

知识大全 Java理论与实践: 正确使用Volatile变量

Java理论与实践:正确使用Volatile变量  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!