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

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.xdnf.cn/news/17268.html

相关文章:

  • 开发板RK3568和stm32的异同:
  • 深入理解 SwiftUI 布局:VStack、HStack 和表单控件全解析
  • 关于数据结构6-哈希表和5种排序算法
  • 【Spring Boot 快速入门】八、登录认证(一)基础登录与认证校验
  • 数据结构:哈希表、排序和查找
  • F I R S T Q U A R T E R 2 0 2 5 - - M a y 2 2 2 0 2 5
  • LINUX88 变量:命令定义;普通数组定义(复);declare -i /-x
  • 【其他分类】Showrunner AI版的Netflix 互动故事创作平台 进行动画生成与微调、角色场景创建
  • MySQL的触发器:
  • 温室韭菜收割机的设计cad【12张】三维图+设计说明书
  • 9:USB摄像头的最后一战(上):MP4音视频合封!
  • Redis(九):Redis高并发高可用(集群Cluster)
  • Javascript中的一些常见设计模式
  • react+echarts实现变化趋势缩略图
  • Elasticsearch:在向量搜索中使用 Direct IO
  • 富士 Instax 12 和 Instax Mini 11 有什么区别?推荐购买哪一款?
  • Microsoft Dynamics AX 性能优化解决方案
  • 【Python-Day 38】告别通用错误!一文学会创建和使用 Python 自定义异常
  • 临床医学 RANDOM SURVIVAL FORESTS(randomSurvivalForest)-2 python 例子
  • 【GPT-OSS 全面测评】释放推理、部署和自主掌控的 AI 新纪元
  • Redis对象编码
  • 微算法科技(NASDAQ:MLGO)使用循环QSC和QKD的量子区块链架构,提高交易安全性和透明度
  • 如何 让ubuntu 在root 下安装的docker 在 普通用户下也能用
  • 基于大数据的地铁客流数据分析预测系统 Python+Django+Vue.js
  • element plus table 表格操作列根据按钮数量自适应宽度
  • 并发编程(五)ThreadLocal
  • 智慧工业设备缺陷检测准确率↑32%:陌讯多模态融合算法实战解析
  • 微软XBOX游戏部门大裁员
  • 6.Linux 系统上的库文件生成与使用
  • 谷粒商城:检索服务