多线程下装拆箱的迷惑在deposit方法

 class Bank {
 private AtomicReference<Double> balance=new AtomicReference<>(0.0); // 账户余额
private AtomicInteger integer=new AtomicInteger();
 /**
  * 存款
  *
  * @param money 存入金额
  */
 public synchronized  void deposit(double money) {
  //如果改成把old的类型改成double就会出错,是什么原理
  Double old = balance.get();
  while (!balance.compareAndSet(old, old+money)) {
   old = balance.get();
  }

 }
 public synchronized  void deposit1(int money) {
  //todo
  int old = integer.get();
  while (!integer.compareAndSet(old, old+money)) {
   old = integer.get();
  }

 }

 /**
  * 获得账户余额
  */
 public double getBalance() {
  return balance.get();
 }
 public double getBal() {
  return integer.get();
 }

 public static void main(String[] args) throws InterruptedException {
  Bank account = new Bank();
  //todo:100线程并发
  for(int i=0;i<1000;i++){
   Runnable runnable = () ->{
    account.deposit1(1);
    account.deposit(1);
   };
   new Thread(runnable).start();
  }

 }
}
全部评论

相关推荐

05-30 13:04
已编辑
门头沟学院 算法工程师
智谱和米哈游都是ai大模型agent的业务钱的话还是米更多,几乎翻倍了,有没有老哥是两个公司其中一个的,能问问转正率咋样嘛,我问的hr回答都是做的好就可以转正暑期实习
码农索隆:选米哈游:短期高薪、敢承担风险、具备强创新能力,且愿押注游戏AI赛道。 选智谱:稳定性与行业通用能力积累,接受薪资差距以换取更稳妥的职业基础。
投递北京智谱华章科技等公司10个岗位 > 实习期间如何提升留用概率?
点赞 评论 收藏
分享
豆泥🍀:同26届,加油,我也还没找到查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务