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.hqwc.cn/news/225385.html

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

相关文章

分享一款4G低功耗摄像头接入物联网平台解决方案

首先介绍硬件方案: 应用场景-4G低功耗摄像头 该方案中,Module为G8100B(4G模块),HOST为海思摄像头(Linux or LiteOS),G8100B的USB可以在Host端虚拟出串口和网卡,G8100B符合以下条件进入休眠&…

二十章总结

线程简介 Windows操作系统是多任务操作系统,它以进程为单位。一个进程是一个包含有自身地址的程序,每个独立执行的程序都称为进程。也就是说每个正在执行的程序都是一个进程。系统可以分配给每一个进程有一段有限的使用CPU的时间(也可以称为C…

MySQL学习day03

一、SQL图形化界面工具 常用比较常用的图形化界面有sqlyog、mavicat、datagrip datagrip工具使用相当方便,功能比前面两种都要强大。 DataGrip工具的安装和使用请查看这篇文档:DataGrip 安装教程 DML-介绍 DML全称是Data Manipulation Language(数据…

浙江启用无人机巡山护林模式,火灾扑救效率高

为了保护天然的森林资源,浙江当地林业部门引入了一种创新技术:林业无人机。这些天空中的守护者正在重新定义森林防火和护林工作的方式。 当下正值天气干燥的季节,这些无人机开始了它们的首次大规模任务。它们在指定的林区内自主巡逻&#xff…

Shell脚本:Linux Shell脚本学习指南(第三部分Shell高级)一

第三部分:Shell高级(一) 这一章讲解 Shell 脚本编程的进阶内容,主要涉及重定向、文件描述符、管道和过滤器、子 Shell、信号等。 本章会使用到一些底层的编程知识,有C语言和 C 编程经验的程序员阅读起来将会更加轻松。…

SQL注入-HTTP头注入

目录 HTTP Header概述 HTTP Header注入 HTTP Header注入概述 HTTP Header注入实例 HTTP Header概述 HTTP工作原理 HTTP请求方法 HTTP报文类型 请求报文(HTTP Request):由客户端发给服务器的消息,其组成包括请求行(R…

Vue基础入门(四):Vue3快速开发模板

快速开发Vue的解决方案 ​ Vue 的开发需要的 node 环境,其实上在开发的过程中会遇到一些你想不到的问题,比如 npm工具的版本和 node 环境不匹配(你把其他项目导入到自己的环境) ​ vue-element-admin(是一个官方提供…

办公软件定制开发在企业发展中的优势|app小程序搭建

办公软件定制开发在企业发展中的优势|app小程序搭建 如今,办公软件已经成为企业日常工作的必需品。很多企业为了提高工作效率和满足自身业务需要,选择定制开发办公软件。下面将介绍定制开发办公软件在企业发展中的优势。 1定制开发办公软件可以满足企业…

Ubuntu新手使用教程

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

全网超细,性能测试-负载测试获得最佳性能总结,一篇打通...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 通过负载测试&…

算法分析-寻找假币题

一.题目需求 你手里有70枚重量相等的真金硬币,但你知道其中有一枚是假币,比其他金币轻。 你有一个平衡秤,你可以一次在两边放上任意数量的硬币,它会告诉你两边是否重量相同,或者如果不相同,哪边更轻。 问题…

NX二次开发UF_CURVE_create_arc 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_create_arc Defined in: uf_curve.h int UF_CURVE_create_arc(UF_CURVE_arc_p_t arc_coords, tag_t * arc ) overview 概述 Creates an arc. You input the matrix tag, …