201711671103《Java程式設計》多執行緒的應用案例
兩個人AB通過一個賬戶A在櫃檯取錢和B在ATM機取錢!
1.先建立一個Bank類
程式碼:package bank;
public class Bank {
static int money = 1000; // 假設一個賬戶有1000塊錢
// 櫃檯Counter取錢的方法
public void Counter(int money) { // 引數是每次取走的錢
Bank.money -= money; //取錢後總數減少
System.out.println("A取走了" + money + "還剩下" + (Bank.money));
}
public void ATM(int money) {
Bank.money -= money;//取錢後總數減少
System.out.println("B取走了" + money + "還剩下" + (Bank.money));
}}
2.建立一個personA類
程式碼:package bank;
public class personA extends Thread{
Bank bank; // 建立銀行物件
// 通過構造器傳入銀行物件,確保兩個人進入的是一個銀行
public personA(Bank bank) {
this.bank = bank;
}
//重寫run方法,在裡面實現使用櫃檯取錢
@Override
public void run() {
while (Bank.money >= 100) {
bank.Counter(100);// 每次取100塊
try {sleep(100); // 取完休息0.1秒
} catch (InterruptedException e) {
e.printStackTrace();
}}}}
3.建立一個personB類
程式碼:package bank;
public class personB extends Thread {
Bank bank;// 建立銀行物件
// 通過構造器傳入銀行物件,確保兩個人進入的是一個銀行
public personB(Bank bank) {
this.bank = bank;
}
// 重寫run方法,在裡面實現使用櫃檯取錢
@Override
public void run(){
while (Bank.money >= 200) {
bank.ATM(200);
try {
sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}}}}
4.建立一個Mainclass類
程式碼:package bank;
public class MainClass {
//兩個人AB通過一個賬戶A在櫃檯取錢和B在ATM機取錢
public static void main(String[] args) {
// 例項化一個銀行物件
Bank bank = new Bank();
// 例項化兩個人,傳入同一個銀行的物件
personA pA = new personA(bank);
personB pB = new personB(bank);
// 兩個人開始取錢
pA.start();
pB.start();
}}
執行結果: