[进阶]Java:线程安全问题、取钱模拟

news/2024/11/29 22:29:28/

什么是线程安全问题?

  • 多个线程,同时操作同一个共享资源的时候,可能会出现业务安全问题。

线程安全问题出现的原因?

  • 存在多个线程在同时执行
  • 同时访问一个共享资源
  • 存在修改该共享资源

代码演示如下:

账户类:

public class Account {private String cardId;private double money;public Account() {}public Account(String cardId, double money) {this.cardId = cardId;this.money = money;}//小明 小红同时过来的public void drawMoney(double money){// 先搞清楚是谁来取钱String name = Thread.currentThread().getName();//1.判断余额是否足够if (this.money >= money){System.out.println(name + "来取钱" + money + "成功~");this.money -= money; // 更新余额System.out.println(name + "来取钱后,余额剩余:" + this.money);}else {System.out.println(name + "来取钱,余额不足~");}}public String getCardId() {return cardId;}public void setCardId(String cardId) {this.cardId = cardId;}public double getMoney() {return money;}public void setMoney(double money) {this.money = money;}
}

线程类:

public class DrawThread extends Thread{private Account acc;public DrawThread(Account acc,String name){super(name);this.acc = acc;}@Overridepublic void run(){//取钱(小明 小红)acc.drawMoney(100000);}
}

测试类:

public class ThreadTest {public static void main(String[] args) {//1.创建一个账户对象,代表两个人的共享账户Account acc = new Account("ICBC-666",100000);//2.创建两个线程,分别代表小明 小红,再去同一个账户new DrawThread(acc,"小明").start();new DrawThread(acc,"小红").start();}
}

 


http://www.ppmy.cn/news/481397.html

相关文章

云时代——华为云产品体验

数字化时代,企业上云大势所趋! 在华为云我也是有着自己的云产品的,现在我很懊悔,懊悔产品买早了!! 现在正值双十一的时候,华为云双十一的优惠太好了,好的我都想再次行动起来了&…

腾讯云2023新春盛惠提前享-千元复工复产优惠券等你来领取!

腾讯云迎来了2023年的第一波优惠活动,本次优惠活动迎来了提前享购的机会,第一个测试复工复产大礼包,总计1188元,其中还有优惠券可叠加活动使用,其次还有买赠专区活动,在此专区个人专享选购的云服务器都可以…

【华为云技术分享】云图说 | 初识云耀云服务器,打造“极优、极简”的云上体验

描述:华为云HECS(Hyper Elastic Cloud Server,云耀云服务器)是专为中小企业和个人开发者打造的新一代云服务器,助力企业上云更轻松! 华为云HECS(Hyper Elastic Cloud Server,云耀云…

【0元限免】华为云服务器等多款云产品免费试用

华为云服务成立于2011年,隶属于华为公司。华为云服务在北京、深圳、南京、美国等多地设立有研发和运营机构,贯彻华为公司"云、管、端"的战略方针,汇集海内外优秀技术人才,专注于云计算中公有云领域的技术研究与生态拓展…

华为云耀服务器与弹性云服务器的区别

云耀云服务器 云耀云服务器(Halo Elastic Cloud Server,HECS)是可以快速搭建简单应用的新一代云服务器,具备独立、完整的操作系统和网络功能。提供快速应用部署和简易的管理能力,适用于网站搭建、开发环境等低负载应用…

华为云服务之弹性云服务器ECS的深度使用和云端实践【华为云至简致远】

【摘要】 什么是弹性云服务器ECS?ECS的产品架构是什么?它有哪些优势和有应用场景?弹性云服务器ECS的使用流程是怎样的?如何运用弹性云服务器ECS搭建微信公众号后台并收发文本消息?让我们带着这些疑问,去弹性…

基于华为云ECS的目标检测与识别的昇腾AI开发体验【华为云至简致远】

【摘要】 基于华为云弹性云服务器ECS,搭配共享镜像,快速搭建环境,进行目标检测与识别的昇腾AI开发体验,开箱即用,打破时间和空间限制,随时随地进行开发,适合个人开发和团队协作,体验…

2022年FIT2CLOUD飞致云开源成绩单

2023年2月15日,中国领先的开源软件公司FIT2CLOUD飞致云发布《2022年开源成绩单》,盘点公司2022年全年在开源软件产品与社区运营方面的表现。目前,飞致云旗下的核心开源软件组合包括JumpServer开源堡垒机、DataEase开源数据可视化分析平台、Me…