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

运行结果:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值