Javaマルチスレッドの銀行ATMの例


転載先:http://www.verejava.com/?id=16992914422268
package com.thread;

import java.util.Scanner;

public class TestBank {

    public static void main(String[] args) {
        Bank bank = new Bank();
        Thread lingming = new Thread(bank, "  ");
        Thread wangtao = new Thread(bank, "  ");

        lingming.start();
        try {
            Thread.sleep(4000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        wangtao.start();
    }
}

class Bank implements Runnable {

    public static int money = 1000;

    @Override
    public synchronized void run() {
        System.out.println(Thread.currentThread().getName() + "           :" + money);
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        Scanner in = new Scanner(System.in);
        System.out.println("         :");
        int num = in.nextInt();
        if (money < num) {
            System.out.println(Thread.currentThread().getName() + "    :" + money + "    " + num);
        } else {
            money = money - num;
            System.out.println(Thread.currentThread().getName() + "    " + num + "        :" + money);
        }
    }
}
転載先:http://www.verejava.com/?id=16992914422268