模擬銀行取錢 (多執行緒操作的好處)
(1)銀行類
package test4;
/**
* 銀行賬戶
* @author user
*
*/
public class Bank {
private static double balance;//類的變數,資料共享
public Bank(){
}
public Bank(double money){
balance = money;
}
//取款操作
public synchronized void getMoney(double money){
System.out.println(Thread.currentThread().getName()+"查詢當前餘額為"+balance+"元");
if(balance >= money){
balance -= money;
System.out.println(Thread.currentThread().getName()+"取款"+money+"元,當前餘額為"+balance+"元");
}
}
}
(2)測試類
package test4;
public class Test {
public static void main(String[] args) {
//只有一個銀行賬戶
Bank bank = new Bank(1000);
//模擬使用不同的APP同時操作銀行賬戶
Qu wx = new Qu(bank,100);
Qu zfb = new Qu(bank,100);
Qu wy = new Qu(bank,100);
wx.setName("微信");
zfb.setName("支付寶");
wy.setName("網銀");
wx.start();
zfb.start();
wy.start();
}
}
(3)取繼承thread方法
package test4;
public class Qu extends Thread{
private Bank bank;
private double money;
public Qu(Bank b,double money){
this.bank = b;
this.money = money;
}
@Override
public void run() {
bank.getMoney(money);
}
}
小結:在執行多工以及下載多檔案時,可以通過多執行緒的併發操作機制達到目的。