这是一个创建于 3686 天前的主题,其中的信息可能已经有所发展或是发生改变。
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
求指导,是哪里错了?
2 条回复 • 2014-11-16 20:37:12 +08:00
|
|
1
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++)
这样也许就能看出来效果了
|
|
|
2
ledkk 2014-11-16 20:37:12 +08:00
你代码抄错了吧。。。。。去看看for循环是不是少了个等号
|