多線程儲戶存錢問題day08

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);
        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章