线程安全问题 的小案例

java 复制代码
package Thread_api_test;



public class ThreadSafety {
    //模拟线程安全问题
    public static void main(String[] args) {
        //1:创建一个账户对象 代表两个人的共享账户
        Account acc=new Account("ICBC",10000);
        //创建两个线程 分别两个人 再去同一个账户里取钱10000


        new DrawThread(acc,"第一个人").start(); //第1个人
        new DrawThread(acc,"第二个人").start(); //第2个人

    }
}
java 复制代码
package Thread_api_test;

public class DrawThread extends Thread {

private Account acc;
public DrawThread(Account acc,String name){
    super(name);
    this.acc=acc;
}

    @Override
    public void run() {
        super.run();
        //取钱
        acc.drawMoney(10000);
    }
}
java 复制代码
package Thread_api_test;

public class Account {
    private String carId;  //卡号
    private double money ;//余额

    public Account() {
    }

    public Account(String carId, double money) {
        this.carId = carId;
        this.money = money;

    }
    public void drawMoney(double mony) {
        //先知道那个人来取钱
      String name= Thread.currentThread().getName();
      if (this.money>=mony){
          System.out.println(name+"来取钱"+mony+"成功!");
          this.money-=mony;
          System.out.println(name+"来取钱后:剩余的":"+this.money);
      }else{
          System.out.println(name+"来取钱:余额不足~~!");
      }
    }




    public String getCarId() {
        return carId;
    }

    public void setCarId(String carId) {
        this.carId = carId;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }


}
相关推荐
顾漂亮22 分钟前
Token快过期的三种续期方案
java·spring·状态模式
冰暮流星1 小时前
css之线性渐变
前端·css
徐同保1 小时前
tailwindcss暗色主题切换
开发语言·前端·javascript
mapbar_front1 小时前
大厂精英为何在中小公司水土不服?
前端
蓝纹绿茶1 小时前
bash:**:pip:***python: 错误的解释器: 没有那个文件或目录
开发语言·python·pip
生莫甲鲁浪戴1 小时前
Android Studio新手开发第二十七天
前端·javascript·android studio
云知谷1 小时前
【经典书籍】C++ Primer 第15章类虚函数与多态 “友元、异常和其他高级特性” 精华讲解
c语言·开发语言·c++·软件工程·团队开发
START_GAME2 小时前
深度学习Diffusers:用 DiffusionPipeline 实现图像生成
开发语言·python·深度学习
牢七2 小时前
mwf攻防。
java
不爱编程的小九九2 小时前
小九源码-springboot088-宾馆客房管理系统
java·开发语言·spring boot