在多线程对一个整数进行自增操作时,需要用同步进行同步。然而,如果同步的对象选取的不合适的话,就无法实现同步的效果。如下面的例子。
公共类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次。
原因在于数对象一直处于改变当中,起不到两个线程的锁的作用。
<强>总结强>
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接