关于同步有趣的同步问题

  

在多线程对一个整数进行自增操作时,需要用同步进行同步。然而,如果同步的对象选取的不合适的话,就无法实现同步的效果。如下面的例子。

        公共类SyncThreadTest扩展线程{   公共静态整数数=0;   私有静态最终int *=10000;   公共SyncThreadTest () {   超级(“SyncThread”);   }   @Override   公共空间run () {   同步(count) {   for (int i=0;我& lt;次;我+ +){   数+ +;   }   }   }   公共静态void main (String [] args)抛出InterruptedException {   SyncThreadTest t1=new SyncThreadTest ();   SyncThreadTest t2=new SyncThreadTest ();   t1.start ();   t2.start ();   t1.join ();   t2.join ();   System.out.println(数);   }   }      

在上面的例子中,选取了自增的变量作为同步的对象。启动2个线程,各自对计数自增10000次。最后的结果,计数的值却不是20000次。

  

原因在于数对象一直处于改变当中,起不到两个线程的锁的作用。

  

<强>总结

  

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
  

关于同步有趣的同步问题