銀行取錢操作

2021-10-19 14:32:34 字數 1492 閱讀 4089

銀行取錢操作

定義賬戶類—臨界資源

定義取錢執行緒

public class 取錢執行緒 extends thread 

@override

public void run() catch (interruptedexception e)

//呼叫賬戶類的方法實現取錢處理

account.setbalance(account.getbalance()-amount);

} }}

存錢執行緒,用於模擬銀行發工資。上賬時間1000ms

public class 存錢執行緒 implements runnable 

@override

public void run() catch (interruptedexception e)

dd+=amount;

account.setbalance(dd);

}}

定義主方法,模擬出現了針對同乙個賬戶同時取錢和發錢的過程

賬戶類 account=new 賬戶類(1l, 10000.);

取錢執行緒 t1=new 取錢執行緒(account, 9000);

存錢執行緒 t2=new 存錢執行緒(account,500.);

t1.start(); t2.start();

t1.join();

t2.join();

system.out.println(account.getbalance());

顯示結果為10500.0,執行結果錯誤?

如果解決出現的錯誤:使用同步處理—synchronized—加鎖

最簡單的方法:

使用方法2的同步**塊,在修改操作上新增對應的同步處理

public void run()  catch (interruptedexception e) 

//呼叫賬戶類的方法實現取錢處理

account.setbalance(account.getbalance()-amount);

}} }

最常見的比較好想的方法:

使用方法1的同步方法

public class 賬戶類 

public synchronized void 存錢(double salary) catch (interruptedexception e)

dd += salary;

this.balance = dd;

} public synchronized void 取錢(double amount) catch (interruptedexception e)

// 呼叫賬戶類的方法實現取錢處理

this.balance = this.balance - amount;

} }public double getbalance()

}

銀行開戶存款取錢

1 static 修飾方法,靜態方法,可以用類名直接呼叫 2 static修改屬性,靜態屬性,屬於類所有,所有的物件所共享 實現過程 1 首先定義乙個bank類,並在其中新增乙個靜態屬性string bankname,表示銀行的名字 public class bank 2 然後建立帶引數乙個構造方法...

銀行取錢執行緒安全問題

一 定義乙個賬戶類 public class account 構造器 public account string accountno double balance 此處省略了accountno和balance的setter和getter方法 accountno的setter和getter方法 pub...

銀行作業系統

主要分為兩人大模組 客戶端 1 進入時的功能開戶 銷戶 登入 解鎖 開戶 輸入姓名 身份證號 設定密碼,如果開戶成功,則伺服器上儲存乙個賬號訊號 乙個賬號存乙個檔案,檔名建議是賬號 銷戶 輸入帳號 密碼,伺服器詢問是否確認銷戶,如果確認則伺服器刪除帳號檔案,並記錄帳號。登入 輸入賬號 密碼,三次錯誤...