銀行取錢操作
定義賬戶類—臨界資源
定義取錢執行緒
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 進入時的功能開戶 銷戶 登入 解鎖 開戶 輸入姓名 身份證號 設定密碼,如果開戶成功,則伺服器上儲存乙個賬號訊號 乙個賬號存乙個檔案,檔名建議是賬號 銷戶 輸入帳號 密碼,伺服器詢問是否確認銷戶,如果確認則伺服器刪除帳號檔案,並記錄帳號。登入 輸入賬號 密碼,三次錯誤...