知识大全 Java中对线程间的变量访问也需要同步控制

Posted

篇首语:运气就是机会碰巧撞到了你的努力。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java中对线程间的变量访问也需要同步控制相关的知识,希望对你有一定的参考价值。

Java中对线程间的变量访问也需要同步控制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  一个简单的计数器 本来以为不需要同步保护 后来发现不行 还是得加上 程序

  public class TestMain

  int i = ; //计数器初始值为

  public static void main(String[] args)

  TestMain c = new TestMain();

  Worker x = new Worker(c);

  for (int i= ; i< ; i++) // 个线程

  new Thread(x) start();

  

  while (true) //每隔一秒中输出计数器的值

  System out println(c i);

  try

  Thread sleep( );

   catch (InterruptedException e)

  

  

  

  

  class Worker implements Runnable

  TestMain c;

  public Worker(TestMain c)

  this c = c;

  

  public void run()

  try

  Thread sleep((int)(Math random() * )); //随机Sleep一段时间

   catch (InterruptedException e)

  

  c i++; //计数器自增 问题在这里 并发写入

  

  

  上面的程序 %的几率结果是 其余的是

  c i++一句需要并发保护

  本来我以为Java里面++是原子的呢 呵呵

cha138/Article/program/Java/gj/201311/11157

相关参考