求助这个程序的结果。

2014-11-16 13:55:04 +08:00
 mnsw
class CBank
{
private static int sum=0;
public static void add(int n)
{
int tmp=sum;
tmp=tmp+n;
try
{
Thread.sleep((int)(1000*Math.random()));
}
catch(InterruptedException e){}
sum=tmp;
System.out.println("sum= "+sum);
}
}
class CCustomer extends Thread
{
public void run()
{
for(int i=1;i<3;i++)
CBank.add(100);
}
}
public class app15_7
{
public static void main(String args[])
{
CCustomer c1=new CCustomer();
CCustomer c2=new CCustomer();
c1.start();
c2.start();
System.out.println("");
}
}

我得到的结果是
sum= 100
sum= 100
sum= 200
sum= 200

但书上说是
sum= 100
sum= 100
sum= 200
sum= 300
sum= 200
sum= 300

求指导,是哪里错了?
2113 次点击
所在节点    问与答
2 条回复
lecher
2014-11-16 14:59:44 +08:00
for(int i=1;i<3;i++)
CBank.add(100);

i的循环值是 1,2

调用4次太少看不出来多线程的效果
想练习多线程,i的循环制取大一些:
for(int i = 1; i <10; i++)

这样也许就能看出来效果了
ledkk
2014-11-16 20:37:12 +08:00
你代码抄错了吧。。。。。去看看for循环是不是少了个等号

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/146918

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX