1. 程式人生 > >201711671103《Java程式設計》多執行緒的應用案例

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();
         }}

執行結果: