/*
银行存款
储户,调用的是银行的存款功能
*/
//当钱存进来时,银行计算总余额功能
class Bank{
double sum=0;
public void addMoney(double money)
{
synchronized(this)
{
if (money>0)
try
{ Thread.sleep(20);
}
catch (Exception e)
{
}
sum+=money;
System.out.println(Thread.currentThread().getName()+"总余额"+sum);
}
}
}
//人有存钱的功能
class Person implements Runnable{
Bank b=new Bank();
public void run()
{ //储存五次,一次存300百,总共存1500.
for (int i=1;i<=5 ;i++ )
{
b.addMoney(100);
}
}
}
class Main{
//创建线程,
public static void main(String[] args){
Person p=new Person();
Thread t=new Thread(p);
//Thread t1=new Thread(p);
// Thread t2=new Thread(p);
t.start();
// t1.start();
// t2.start();
}
}
按理说,三个线程与一个线程执行后,出现的结果是一样.才能体现出多线程比单线程高效.
但当我把后面两个线程开启时,怎会钱的数量会出现到1500呢??求解
|