• 多线程继承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();

    }

    }

     

  • 相关阅读:
    react和vue——比较
    CSS 网格布局学习
    Spark 获取指定分区内的数据
    Spark常见算子
    使用 python 批量插入 hive
    Linux 获取在使用的网卡名称,信息
    Linux 修改成静态IP 设置网关 DNS
    Linux shell 使用脚本 修改文本中的 key value
    Linux 上的一些有用的shell脚本
    使用canda 安装 pyhdfs 实现文件上传到 HDFS
  • 原文地址:https://www.cnblogs.com/1-9-9-5/p/8525600.html
Copyright © 2020-2023  润新知