本帖最后由 席杰 于 2014-8-10 15:29 编辑
/*
定义一个程序,俩人去银行存钱,每人存300,分3次存。
*/
//银行
class Bank{
//银行里总共有的钱数
int totalMoney=0;
//网银行里存钱
public void MoneyStore(int money){
totalMoney=money+totalMoney;
//打印出哪位顾客存的钱,并打印出银行钱库的总数。
System.out.println(Thread.currentThread().getName()+"..."+totalMoney);
}
}
//顾客
class Consumer implements Runnable{
Bank bank=new Bank();
//顾客存钱的动作
public void run(){
while(true){
for(int i=0;i<3;i++){
bank.MoneyStore(100);
}
}
}
}
//主函数
public class Shishi {
public static void main(String[] args) {
Consumer consumer=new Consumer();
Thread t1=new Thread(consumer);
Thread t2=new Thread(consumer);
t1.start();
t2.start();
}
}
加上while循环后,程序运行后打印出这样的结果:
Thread-0...16900600
Thread-1...16900700
Thread-0...16900800
Thread-1...16900900
Thread-0...16901000
Thread-1...16901100
Thread-0...16901200
Thread-1...16901300
Thread-0...16901400
......就这样一直打印下去,程序不停。
而去掉while后就打印出正确的结果:
Thread-0...200
Thread-1...200
Thread-0...300
Thread-1...400
Thread-0...500
Thread-1...600
为什么会出现这样的结果啊。加上while循环后不应该一直无限打印啊,因为在run()方法中,for(int i=0;i<3;i++){}也在控制着程序的运行啊。当每个线程运行到i=3,就应该不会继续打印输出啊。为什么还会打印啊!奇怪了,求高手解决,给我讲讲。
|