多线程:三大不安全案例
package com.wuming.syn; //不安全的取钱 //两个人去银行取钱,账户 public class UnSafeBank {public static void main(String[] args) {//账户Account account = new Account(100,"结婚基金");Drawing you = new Drawing(account,50,"你");Drawing girlFriend = new Drawing(account,100,"girlFriend");you.start();girlFriend.start();}} //账户 class Account{int money;//余额String name;//卡名public Account(int money, String name) {this.money = money;this.name = name;} }//银行,模拟取款 class Drawing extends Thread{Account account;//账户//取了多少钱int drawingMoney;//现在手里有多少钱int nowMoney;public Drawing(Account account, int drawingMoney, String name) {super(name);//线程namethis.account = account;this.drawingMoney = drawingMoney;this.nowMoney = nowMoney;} //取钱@Overridepublic void run() {//判断有没有钱if(account.money-drawingMoney<0){System.out.println(Thread.currentThread().getName()+"钱不够,取不了");return;}//卡内余额=余额-你取的钱account.money=account.money-drawingMoney;//你手里的钱nowMoney=nowMoney+drawingMoney;System.out.println(account.name+"余额为:"+account.money);//Thread.currentThread().getName()=this.getName();System.out.println(this.getName()+"手里的钱"+nowMoney);} }
结婚基金余额为:50
你手里的钱50
girlFriend钱不够,取不了
=================
模拟延时
package com.wuming.syn; //不安全的取钱 //两个人去银行取钱,账户 public class UnSafeBank {public static void main(String[] args) {//账户Account account = new Account(100,"结婚基金");Drawing you = new Drawing(account,50,"你");Drawing girlFriend = new Drawing(account,100,"girlFriend");you.start();girlFriend.start();}} //账户 class Account{int money;//余额String name;//卡名public Account(int money, String name) {this.money = money;this.name = name;} }//银行,模拟取款 class Drawing extends Thread{Account account;//账户//取了多少钱int drawingMoney;//现在手里有多少钱int nowMoney;public Drawing(Account account, int drawingMoney, String name) {super(name);//线程namethis.account = account;this.drawingMoney = drawingMoney;this.nowMoney = nowMoney;} //取钱@Overridepublic void run() {//判断有没有钱if(account.money-drawingMoney<0){System.out.println(Thread.currentThread().getName()+"钱不够,取不了");return;}//sleep可以放大问题的发生性try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}//卡内余额=余额-你取的钱account.money=account.money-drawingMoney;//你手里的钱nowMoney=nowMoney+drawingMoney;System.out.println(account.name+"余额为:"+account.money);//Thread.currentThread().getName()=this.getName();System.out.println(this.getName()+"手里的钱"+nowMoney);} }
结婚基金余额为:0
girlFriend手里的钱100
结婚基金余额为:-50
你手里的钱50
多线程:三大不安全案例相关推荐
- 秒杀多线程第十六篇 多线程十大经典案例之一 双线程读写队列数据
本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5136035 转载请标明出处,原文地址:http://blog.csdn.net/mo ...
- 爬虫——多线程糗事百科案例
Queue(队列对象) Queue是python中的标准库,可以直接import Queue引用;队列是线程间最常用的交换数据的形式 python下多线程的思考 对于资源,加锁是个重要的环节.因为py ...
- JMM内存模型 多线程三大特性
本文目录 1.JMM 内存模型 1.主内存 2.工作内存 3.JMM 线程操作内存的两条基本规定 4.JMM 模型八大内存交互指令 5.JMM 模型内存交互操作 6.JMM 模型内存同步规则 2.多线 ...
- Java 并发系列(一):多线程三大特性
概述 多线程三大特性:原子性.可见性.有序性. 1. 原子性 原子性是指:多个操作作为一个整体,不能被分割与中断,也不能被其他线程干扰.如果被中断与干扰,则会出现数据异常.逻辑异常. 多个操作合并的整 ...
- joblib多线程、多进程学习案例(一)——一步步写多进程任务
文章目录 1. 先指定多进程或多线程 2. 指定并行/多线程需要执行的任务 3. 最后递交给cpu即可 完整案例 使用joblib包,导入:from joblib import Parallel 1. ...
- 【Java 多线程】多线程带来的的风险-线程安全、多线程五个经典案例
日常开发中如果用到多线程编程,也一定会涉及到线程安全问题 线程安全这个问题就不太好理解 正因为如此,程序猿们才尝试发明出更多的编程模型来处理并发编程的任务 例如:多进程.多线程.actor.csp.a ...
- 物流、节点、直播……三大实际运用案例看懂5G无人机!
近日,三星网络演示了一种基于无人机+AI的5G工程验收和优化解决方案. 该方案通过无人机和AI分析基站和天线的安装状态,可快速.准确地优化5G网络性能. 三星表示,在实际5G基站工程安装中,大约有10 ...
- python多线程糗事百科案例
案例:多线程爬虫 目标:爬取糗事百科段子,待爬取页面URL:http://www.qiushibaike.com/8hr/page/1 要求: 使用requests获取页面信息,用XPATH/re 做 ...
- Linux 多线程开发(附有案例代码)
一.线程概述 1.线程概念 与进程(process)类似,线程(thread)是允许应用程序并发执行多个任务的一种机制.一个进程可以包含多个线程.同一个程序中的所有线程均会独立执行相同程序,且共享同一 ...
最新文章
- imagick API 中文说明
- C++ 编译器默认构造函数奇怪问题
- Console Snacks[摘自Advanced Rails Recipes]
- 夏季(8 ~9)月 在深圳举办线下dotnet 大会 调查
- 模板方法模式(Template Method Pattern)学习笔记
- http请求 url 竖线_http.createServer创建http服务
- Ubuntu18.04快捷键
- php twig输出html,php – HTML不呈现[Twig] / [Slim]
- javaweb使用 window.location.href 传中文参数 乱码问题
- 手把手教你在Linux环境下安装Python3
- 2.3.4nbsp;《孙子兵法》的基本原则
- 前端换肤的N种方案,请收下
- iOS开发中键盘样式和自定义键盘。
- 微服务架构深度解析与最佳实践 - 第七部分:全文总结与引用材料
- 34万奖金!第三届厦门国际银行数创金融杯金融营销大赛来啦!
- windows安装nginx莫名其妙 CreateFile()权限不够创建问题
- Cron表达式详解和表达式的验证
- 应用勤哲EXCEL服务器实施机械制造行业之压缩机生产企业管理软件系统案例
- 【期权课堂】第5课 期权价格的平价关系
- 吊打面试官系列之:进阶必会Docker命令大全,怎么跟我想象的不一样,简直太easy了。
热门文章
- 集群e家:O2O电商服务平台上云
- MongoDB sharding 集合不分片性能更高?
- 二十分钟教你如何将区块链应用与函数计算相结合 1
- Python数据挖掘与机器学习技术入门实战
- 全球云端数据仓库领导者 MaxCompute 将于本月10日正式开服美东节点
- 一张图看懂阿里云网络产品[十一]云托付
- 工业发展 安全护航 2021年工业互联网安全发展峰会成功召开
- QingStor分布式存储全线升级:自研需要勇气,成功还要看实力
- 程序员!别逼自己买课了,每天花10分钟做这件事,写代码能力暴增......
- 年薪15W的程序员因为掌握这个技能,薪资翻倍!