线程安全问题 的小案例

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


}
相关推荐
BYSJMG4 分钟前
计算机毕设选题:基于Python+MySQL校园美食推荐系统【源码+文档+调试】
大数据·开发语言·python·mysql·django·课程设计·美食
今天不要写bug4 分钟前
基于elementUI实现一个可编辑的表格(简洁版)
前端·javascript·elementui
上优7 分钟前
Vue3纯前端同源跨窗口通信移动AGV小车
前端·vue.js·状态模式
h_k100868 分钟前
Chrome 插件开发入门技术文章大纲
前端·chrome
一只小阿乐8 分钟前
vue-router 的实现原理
前端·javascript·vue.js·路由·vue-router
Zz_waiting.9 分钟前
案例开发 - 日程管理 - 第七期
开发语言·前端·javascript·vue.js·html·路由
叫我阿柒啊9 分钟前
Java全栈开发面试实战:从基础到微服务的完整技术栈解析
java·spring boot·微服务·前端框架·vue·jwt·全栈开发
writeone9 分钟前
9-10关于JS初学产生的问题
开发语言·javascript·ecmascript
前行的小黑炭10 分钟前
Android:在项目当中可能会遇到的ANR,应该如何解决?
android·java·kotlin