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

多线程:三大不安全案例相关推荐

  1. 秒杀多线程第十六篇 多线程十大经典案例之一 双线程读写队列数据

    本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5136035 转载请标明出处,原文地址:http://blog.csdn.net/mo ...

  2. 爬虫——多线程糗事百科案例

    Queue(队列对象) Queue是python中的标准库,可以直接import Queue引用;队列是线程间最常用的交换数据的形式 python下多线程的思考 对于资源,加锁是个重要的环节.因为py ...

  3. JMM内存模型 多线程三大特性

    本文目录 1.JMM 内存模型 1.主内存 2.工作内存 3.JMM 线程操作内存的两条基本规定 4.JMM 模型八大内存交互指令 5.JMM 模型内存交互操作 6.JMM 模型内存同步规则 2.多线 ...

  4. Java 并发系列(一):多线程三大特性

    概述 多线程三大特性:原子性.可见性.有序性. 1. 原子性 原子性是指:多个操作作为一个整体,不能被分割与中断,也不能被其他线程干扰.如果被中断与干扰,则会出现数据异常.逻辑异常. 多个操作合并的整 ...

  5. joblib多线程、多进程学习案例(一)——一步步写多进程任务

    文章目录 1. 先指定多进程或多线程 2. 指定并行/多线程需要执行的任务 3. 最后递交给cpu即可 完整案例 使用joblib包,导入:from joblib import Parallel 1. ...

  6. 【Java 多线程】多线程带来的的风险-线程安全、多线程五个经典案例

    日常开发中如果用到多线程编程,也一定会涉及到线程安全问题 线程安全这个问题就不太好理解 正因为如此,程序猿们才尝试发明出更多的编程模型来处理并发编程的任务 例如:多进程.多线程.actor.csp.a ...

  7. 物流、节点、直播……三大实际运用案例看懂5G无人机!

    近日,三星网络演示了一种基于无人机+AI的5G工程验收和优化解决方案. 该方案通过无人机和AI分析基站和天线的安装状态,可快速.准确地优化5G网络性能. 三星表示,在实际5G基站工程安装中,大约有10 ...

  8. python多线程糗事百科案例

    案例:多线程爬虫 目标:爬取糗事百科段子,待爬取页面URL:http://www.qiushibaike.com/8hr/page/1 要求: 使用requests获取页面信息,用XPATH/re 做 ...

  9. Linux 多线程开发(附有案例代码)

    一.线程概述 1.线程概念 与进程(process)类似,线程(thread)是允许应用程序并发执行多个任务的一种机制.一个进程可以包含多个线程.同一个程序中的所有线程均会独立执行相同程序,且共享同一 ...

最新文章

  1. imagick API 中文说明
  2. C++ 编译器默认构造函数奇怪问题
  3. Console Snacks[摘自Advanced Rails Recipes]
  4. 夏季(8 ~9)月 在深圳举办线下dotnet 大会 调查
  5. 模板方法模式(Template Method Pattern)学习笔记
  6. http请求 url 竖线_http.createServer创建http服务
  7. Ubuntu18.04快捷键
  8. php twig输出html,php – HTML不呈现[Twig] / [Slim]
  9. javaweb使用 window.location.href 传中文参数 乱码问题
  10. 手把手教你在Linux环境下安装Python3
  11. 2.3.4nbsp;《孙子兵法》的基本原则
  12. 前端换肤的N种方案,请收下
  13. iOS开发中键盘样式和自定义键盘。
  14. 微服务架构深度解析与最佳实践 - 第七部分:全文总结与引用材料
  15. 34万奖金!第三届厦门国际银行数创金融杯金融营销大赛来啦!
  16. windows安装nginx莫名其妙 CreateFile()权限不够创建问题
  17. Cron表达式详解和表达式的验证
  18. 应用勤哲EXCEL服务器实施机械制造行业之压缩机生产企业管理软件系统案例
  19. 【期权课堂】第5课 期权价格的平价关系
  20. 吊打面试官系列之:进阶必会Docker命令大全,怎么跟我想象的不一样,简直太easy了。

热门文章

  1. 集群e家:O2O电商服务平台上云
  2. MongoDB sharding 集合不分片性能更高?
  3. 二十分钟教你如何将区块链应用与函数计算相结合 1
  4. Python数据挖掘与机器学习技术入门实战
  5. 全球云端数据仓库领导者 MaxCompute 将于本月10日正式开服美东节点
  6. 一张图看懂阿里云网络产品[十一]云托付
  7. 工业发展 安全护航 2021年工业互联网安全发展峰会成功召开
  8. QingStor分布式存储全线升级:自研需要勇气,成功还要看实力
  9. 程序员!别逼自己买课了,每天花10分钟做这件事,写代码能力暴增......
  10. 年薪15W的程序员因为掌握这个技能,薪资翻倍!