Java线程安全问题

什么是线程安全问题

 

 

 用程序模拟线程安全问题

 主线程

package com.itheima.d3;public class ThreadTest {public static void main(String[] args) {//1、创建一个账户对象,代表两个人的共享账户Accout acc = new Accout("ICBC-110",100000);//2、创建两个线程,分别代表小明、小红,再去同一个账户对象中去取钱10万new DrawThread(acc,"小明").start();//小明new DrawThread(acc,"小红").start();//小红}
}

子线程

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

方法类

package com.itheima.d3;public class Accout {private String cardId;private double money;public Accout() {}public Accout(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;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/178650.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django回顾【二】

目录 一、Web框架 二、WSGI协议 三、 Django框架 1、MVC与MTV模型 2、Django的下载与使用 补充 3、启动django项目 补充 5、 Django请求生命周期 四、路由控制 1、路由是什么? 2、如何使用 3、path详细使用 4、re_path详细使用 5、反向解析 6、路由…

Linux 中的 ls 命令使用教程

目录 前言 如何运用 ls 命令 1、列出带有所有权的文件和目录 2、获取以人类可读的方式显示的信息 3、列出隐藏文件 4、递归列出文件 5、在使用 ls 时对文件和目录做区分 6、列出指定扩展名的文件 7、基于大小对输出内容排序 8、根据日期和时间排序文件 让我们来总结…

从零带你底层实现unordered_map (2)

💯 博客内容:从零带你实现unordered_map 😀 作  者:陈大大陈 🚀 个人简介:一个正在努力学技术的准C后端工程师,专注基础和实战分享 ,欢迎私信! 💖 欢迎大家…

figma 基础使用 —— 常用方法

一、 导入组件 分成两种方式 (1)离线的包导入(iOS 常用组件.fig 直接拖拽到figma最近网页) (2)在插件市场下载https://www.figma.com/community 二、figma中使用标尺 快捷键:shift R 三、插…

备案小技能:ICP备案(网站、app、小程序)经营性ICP备案(增值电信业务经营许可证)

文章目录 引言I ICP 备案1.1 小程序备案1.2 app备案1.3 网站备案1.4 公安备案II 经营性ICP备案2.1 增值电信业务经营许可证see also引言 一个阿里云账号,只能使用一个ICP备案主体,可以办理app和网站备案。 经营性ICP备案阿里云需要收取备案代理费用。福建需要产品价格¥414…

宿主Linux——KVM安装Windows7系统

KVM虚拟技术 KVM(Kernel-based Virtual Machine) 是基于Linux内核的开源虚拟化技术,在一台物理机上可同时运行多个虚拟系统。KVM使用硬件虚拟化扩展,例如Intel的VT和AMD的AMD-V,在性能方面更加高效,可提供更好的计算能力和响应速…

【从浅识到熟知Linux】基本指令之rmdir和rm

🎈归属专栏:从浅学到熟知Linux 🚗个人主页:Jammingpro 🐟每日一句:加油努力,这次写完真的真的真的要去干饭了! 文章前言:本文介绍rmdir和rm指令用法并给出示例和截图。 文…

存在即合理,低代码的探索之路

目录 一、前言 二、低代码迅速流行的原因 三、稳定性和生产率的最佳实践 四、程序员用低代码开发应用有哪些益处? 1、提升开发价值 2、利于团队升级 一、前言 低代码的热潮至今未消停,从阿里钉钉跨平台协作方式,再到飞书上的审批流程&#xf…

python getattr() setattr() hasattr() delattr()内置函数详解

python getattr() setattr() hasattr() delattr()内置函数详解 1.getattr(object, name[, default]): 功能:获取对象的属性值。 参数: object:要获取属性的对象。 name:属性的名称。 default(可选&#x…

房屋租赁出售经纪人入驻小程序平台

一款专为房屋中介开发的小程序平台,支持独立部署,源码交付,数据安全无忧。 核心功能:房屋出租、经纪人独立后台、分佣后台、楼盘展示、房型展示、在线咨询、地址位置配套设施展示。 程序已被很多房屋交易中介体验使用过&#x…

hive两张表实现like模糊匹配关联

testa表(字段a)aaabbacccddddddaaatestb表(字段b)ab1. 使用likeconcat模糊配对 selecta.a from testa a ,testb b where a like concat(%,b.b,%) group by a.a2. 使用locate函数 selecta.a from testa a ,testb b where locate(b.b,a.a)>0 group by a.a3. 使用instr函数 sel…

uni-app 离线打包安卓Apk(小白上手)

场景: 在使用uni-app 开发apk时,使用云打包有次数限制。尤其对于测试阶段是无比难受的,通常是浪费打包次数进行打包或者通过usb 给测试机更新开发环境,但这都是无比漫长的过程 尤其有多个测试机真的是噩梦般的存在 下载离线打包示…

CMake中的变量: 与编程语言相关的变量

变量名称描述CMAKE_C_COMPILE_FEATURESC编译器已知的功能列表CMAKE_C_EXTENSIONSC_EXTENSIONS目标属性的默认值(如果在创建目标时设置)。CMAKE_C_STANDARDC_STANDARD目标属性的默认值(如果在创建目标时设置)。CMAKE_C_STANDARD_RE…

Android frameworks 开发总结之十一

1.查看android关机前的log 有时候我们在没有连接电脑的情况下,会在测试的时候突然机器关机. 这个时候如果查看 log信息就看不到了。测试前可以执行下面的命令,之后再进行测试. $ adb shell $ nohup logcat > /sdcard/xxx.log 2.android日期时间同步 关于android请求…

【数据库】聊聊一颗B+树 可以存储多少数据

我们知道数据库使用的数据结构是B树,但是B树可以存储多少数据呢,在面试中也是经常会问的问题,所以我们从根上理解这个问题。 操作系统层面 数据都是存储在磁盘中的,而磁盘中的数据都是以最新单位扇区进行分割。一个扇区的大小是…

Python基础语法之学习数据转换

Python基础语法之学习数据转换 一、代码二、效果 一、代码 #数字转换成字符串 num_str str(11) print(type(num_str))#字符串转整数 numint("11") print(type(num),num)#浮点数转整数 float_num int(11.1) print(type(float_num),float_num)#整数转浮点数 num_flo…

OpenSSL 使用AES对文件加解密

AES(Advanced Encryption Standard)是一种对称加密算法,它是目前广泛使用的加密算法之一。AES算法是由美国国家标准与技术研究院(NIST)于2001年发布的,它取代了原先的DES(Data Encryption Stand…

webpack项目工程初始化

一、初始化项目 默认系统已经安装node //初始化 pnpm init//安装webpack pnpm i -D webpack webpack-cli 新建一个index.html的入口文件 新建一个src文件存放js代码,src里面新建一个index.js package.josn配置打包命令 {"name": "webpack-cs&q…

MIT6.824-Raft笔记3:Raft日志、应用层和raft之间的日志“传递“

1. 日志(Raft Log) 你们应该关心的一个问题是:为什么Raft系统这么关注Log,Log究竟起了什么作用? Log是Leader用来对操作排序的一种手段。这对于复制状态机(复制状态机基于:对于复制的服务 ser…

Linux下基于MPI的hello程序设计

Linux下基于MPI的hello程序设计 一、MPICH并行计算库安装实验环境部署创建SSH信任连接,实现免密钥互相连接node1安装MPICH 3.4配置NFS注意(一定要先看)环境测试 二、HELLO WORLD并行程序设计 一、MPICH并行计算库安装 在Linux环境下安装MPICH执行环境,配…