当前位置: 首页 > news >正文

Java基础-模拟多线程安全问题场景

案例要求:

实现思路:

实现模拟多线程安全性问题,比如银行余额1万元,两用户同时去取1万元,可能取出总共两万元,现在是模拟问题,后面会解决

Main方法:

import java.io.*;
import java.util.*;
import java.util.stream.Collectors;//TIP 要<b>运行</b>代码,请按 <shortcut actionId="Run"/> 或
// 点击装订区域中的 <icon src="AllIcons.Actions.Execute"/> 图标。
public class Main {static Scanner sc = new Scanner(System.in);public static void main(String[] args)  {Card card = new Card("ICBC-BC", 10000);new Operate("小明",card).start();new Operate("小王",card).start();}
}

Card方法:

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
public class Card {private String name;private int money;public void getMoney(int money){System.out.println("开始取钱"+money+"元");if(this.money>=money){System.out.println(name+"取钱成功,取钱金额为"+money);this.money-=money;System.out.println("余额为"+this.money);}else{System.out.println("取钱失败,余额不足");}}
}

Operate方法:

public class Operate extends Thread {private Card card;public Operate(String name, Card card) {super(name);this.card = card;}@Overridepublic void run() {card.getMoney(10000);}
}


总结:

该Java程序模拟了多线程银行卡取款场景。Main类创建了一个初始余额10000元的ICBC-BC银行卡对象,并启动两个线程(&quot;小明&quot;和&quot;小王&quot;)同时进行取款操作。Card类封装了银行卡信息及取款逻辑,包含余额检查和扣款功能。Operate类继承Thread实现多线程操作,每个线程尝试取出10000元。由于未加同步控制,当两个线程并发执行时可能出现并发问题,导致余额异常。程序演示了多线程环境下共享资源访问可能引发的线程安全问题。

http://www.dtcms.com/a/320923.html

相关文章:

  • Track Any Anomalous Object: A Granular Video Anomaly Detection Pipeline
  • tmi8150b设置电机速度有两个地方,x轴电机,y轴电机,具体如下
  • 13. 搜索引擎-ElasticSearch
  • (已解决)Mac 终端上配置代理
  • 机器学习支持向量机(SVM)
  • C++使用FFmpeg进行视频推流
  • conda或mamba install 相关软件报错
  • GraphRAG 入门教程:从原理到实战
  • 【概率论】均匀分布的伪随机数
  • 代码随想录Day43:动态规划(最长递增子序列、最长连续递增序列、最长重复子数组)
  • Linux网络--1、网络基础
  • 【机器学习深度学习】微调训练数据质量
  • JSON结构的 泛型和 **非泛型两种 Java 实体类实现方案
  • 【DFS系列 | 递归】DFS算法入门:递归原理与实现详解
  • Electron——窗口
  • 工具分享05 | Python制作PDF合并拆分提取工具V1.0
  • Linux 学习 ------Linux 入门(上)
  • trae开发c#
  • Android 中 实现自定义 Dialog 提示框
  • @CacheConfig​​当前类中所有缓存方法详解
  • Go语言实战案例:简易JSON数据返回
  • Linux多线程——生产者消费者模型
  • 芯科科技成为全球首家通过PSA 4级认证的物联网芯片厂商巩固其在物联网安全领域的领导地位
  • 从零开始构建【顺序表】:C语言实现与项目实战准备
  • 《汇编语言:基于X86处理器》第12章 浮点数处理与指令编码(2)
  • 【JavaEE】(10) JavaEE 简介
  • 虚幻基础:场景actor与角色的碰撞
  • 走进Linux世界:make和makefile
  • 深入浅出线程池ThreadPoolExecutor
  • 机器人焊机智能流量调节