package com.xujy.thread;
/**
* 有兩個儲戶,每次向同一個賬戶存錢,一次存1000,各存了三次,打印出賬戶的餘額,採用多線程的方式,保證線程是安全的
* @author Administrator
*
*/
public class AccountMoney {
public static void main(String[] args) {
Account account=new Account();
Custmer ct1=new Custmer(account);
Custmer ct2=new Custmer(account);
ct1.setName("線程1");
ct2.setName("線程2");
ct1.start();
ct2.start();
}
}
class Account{
double balance;
public synchronized void deposit(double amt){//synchronized的對象是account並且只有一個,不會發生線程安全問題.
balance+=amt;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+":賬戶餘額"+balance);
}
}
class Custmer extends Thread{
Account account;
public Custmer(Account account){
this.account=account;
}
@Override
public void run() {
for(int i=0;i<10;i++){
account.deposit(1000);
}
}
}