• 多线程继承Thread类的实现方法


     -------------------------------------------------------------------------------------两个人AB通过一个账户A在柜台取钱和B在ATM机取钱!----------------------------------------------------------------------

    (一)创建一个Bank类

    package com.xykj.bank;

    public class Bank {

    // 假设一个账户有1000块钱
    static int money = 1000;

    // 柜台Counter取钱的方法
    public void Counter(int money) {// 参数是每次取走的钱
    Bank.money -= money;//取钱后总数减少
    System.out.println("A取走了" + money + "还剩下" + (Bank.money));
    }

    // ATM取钱的方法
    public void ATM(int money) {// 参数是每次取走的钱
    Bank.money -= money;//取钱后总数减少
    System.out.println("B取走了" + money + "还剩下" + (Bank.money));
    }

    }
     

    -------------------------------(二)创建一个PersonA类---------------------------------------

    package com.xykj.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();
    }
    }
    }
    }
      

    -------------------------(三)创建一个PersonB类------------------


    package com.xykj.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);// 每次取200块
    try {
    sleep(100);// 取完休息0.1秒
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }

    }
    }
    ----------------------------------------------创建创建一个测试类的调用类-------------------------------------
    public class Mainclass {

    /**
    * @param args
    */
    public static void main(String[] args) {
    Bank bank=new Bank();
    PersonA a=new PersonA(bank);
    PersonB b=new PersonB(bank);
    // 两个人开始取钱
    a.start();
    b.start();

    }

    }

     

  • 相关阅读:
    VueJS promise
    VueJS vue-router-keep-alive
    VueJS电商管理系统(Element-UI)B站学习笔记
    VueJS 对象更新
    CSS 类名选择器
    VueJS 全局导航守卫
    VueJS v-model 双向绑定
    JS 高阶函数 filter/map/reduce
    VueJS filters过滤器
    UVA1601-双向广度优先搜索
  • 原文地址:https://www.cnblogs.com/1-9-9-5/p/8525600.html
Copyright © 2020-2023  润新知