javase实现银行转账
生活随笔
收集整理的這篇文章主要介紹了
javase实现银行转账
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
10個賬戶,每個1000元,互相轉賬【隨機轉】,轉了1000次之后就輸出一下用戶的余額和總的賬戶余額【要為10000】
1、主類
/*** 主類* * @function 10個賬戶,每個1000元,互相轉賬【隨機轉】,轉了1000次之后就輸出一下用戶的余額和總的賬戶余額【要為10000】* @author HDL* */ public class BankMain {/*** 主方法* * @param args*/public static void main(String[] args) {Bank bank = new Bank();// 銀行類BankThread[] bt = new BankThread[10];// 10個銀行線程for (int i = 0; i < bt.length; i++) {// 開啟10個線程bt[i] = new BankThread(bank, i);new Thread(bt[i]).start();}} }
2、銀行類
public class Bank {double[] account = new double[10];// 10個銀行賬戶public Bank() {// 初始化銀行賬戶類for (int i = 0; i < account.length; i++) {account[i] = 1000;}}/*** 轉賬方法* * @param from* 誰轉* @param to* 轉給誰* @param money* 轉多少*/public synchronized void transfer(int from, int to, double money) {// 轉出前需要判斷戰賬戶余額是否有money那么多,沒有就繼續等待【這里需要使用while而不是if】while (account[from] <= money) {// 沒有錢了就不能轉了,等待看是否有人轉過來try {wait();// 等待} catch (InterruptedException e) {e.printStackTrace();}}// System.out.println("賬戶 " + from + " 向 " + to + " 轉了 " + money);account[from] -= money;// 出賬account[to] += money;// 入賬notify();// 喚醒一個等待的線程}/*** 顯示用戶余額和總額*/public synchronized void show() {int sum = 0;for (int i = 0; i < account.length; i++) {System.out.println("--------------------賬戶 " + (i + 1) + " 的余額為:"+ account[i]);sum += account[i];}System.out.println("--------------------銀行總額為:" + sum);} }
3、線程類
public class BankThread implements Runnable {Bank bank;// 銀行實體private int count = 0;// 記錄轉賬次數private int from = 0;// 固定由誰來轉賬/*** 構造方法 初始化對象* * @param bank* 銀行* @param from* 誰來轉*/public BankThread(Bank bank, int from) {this.bank = bank;this.from = from;}@Overridepublic void run() {while (true) {// 一直執行int to = (int) (Math.random() * 10);// 隨機產生0-9的賬戶while (from == to) {// 這個賬戶不能為當前from,相同了就繼續生成to = (int) (Math.random() * 10);// 重新生成}double money = (int) (Math.random() * 500 + 100);// 隨機的轉100-599的賬bank.transfer(from, to, money);// 開始轉賬了count++;// 自增一// System.out.println("轉了 " + count + " 次");if (count == 1000) {// 判斷是否有1000次轉賬了count = 0;// 重新統計bank.show();// 顯示余額}}} }
4、運行結果
總結
以上是生活随笔為你收集整理的javase实现银行转账的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SG函数解析
- 下一篇: ORACLE快速遍历树及join基表很大