您现在的位置是:首页 >

多个线程调用一个函数 Java中对线程间的变量访问也需要同步控制

火烧 2022-12-16 00:56:18 1095
Java中对线程间的变量访问也需要同步控制   一个简单的计数器 本来以为不需要同步保护 后来发现不行 还是得加上 程序    u lic cla Te tMai {  i t i = //计数器初始

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

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

  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里面++是原子的呢 呵呵

多个线程调用一个函数 Java中对线程间的变量访问也需要同步控制
lishixinzhi/Article/program/Java/gj/201311/11157  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码