/**
* 要求:
* 银行有一个账户,有两个储户分别向同一个账户存3000元,每次存1000元,存三次,每次存完打印账号余额。
*
* 分析:
* 1.是否是多线程问题?是,两个储户线程
* 2.是否有共享数据?有,账户余额
* 3.是否有线程安全问题?有
* 4.如何解决线程安全问题?同步机制:有三种方式
*
* @author orz
*/
class Account{
private double money;
public Account(double money)
{
this.money=money;
}
public synchronized void setMoney(double amt)
{
if (amt>0)
{
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
money=money+amt;
System.out.println(Thread.currentThread().getName()+"存钱成功,余额为:"+money);
}
}
}
class Customer extends Thread{
private Account acct;
public Customer(Account acct)
{
this.acct=acct;
}
@Override
public void run() {
for (int i = 0; i <3 ; i++) {
acct.setMoney(1000);
}
}
}
/**
* @author orz
*/
public class ThreadTest {
public static void main(String[] args) {
//同步监视器是重难点
Account acct=new Account(0);
Customer c1=new Customer(acct);
Customer c2=new Customer(acct);
c1.setName("甲");
c2.setName("乙");
c1.start();
c2.start();
}
}