原 自学JVAVA---(64)--(内功心法【62】)三大案例再升级
三大案例再升级
【小城贝尔】
三大案例再升级,模拟影院票信息。
一个影院多人座,好似关系一对多。
时长多用块中锁,买票操作多端落。
现在挑战方法锁,操作即往一种括。
及时线程来强转,抓住子类来平反。
容器并发J U C,数组书写上拷贝。
内部已有安全锁,线程万千易操作。
三大案例再升级,模拟影院票信息。
一个影院多人座,好似关系一对多。
class HappyCimema{List<Integer> cSeat;String cName;public HappyCimema(List<Integer> cSeat, String cName) {this.cSeat = cSeat;this.cName = cName;}
}
class Client implements Runnable{private HappyCimema hc;private List<Integer> seats;public Client(HappyCimema hc, List<Integer> seats) {this.hc = hc;this.seats = seats;}@Overridepublic void run() {buyFilmTickets();}public boolean buyFilmTickets() {//双重检测if(hc.cSeat.size() == 0){System.out.println(Thread.currentThread().getName() + "不好意思 票买完啦。。。。。。 ");return false;}synchronized (hc) {//获得影院所有的座位List<Integer> cSeat = hc.cSeat;//拷贝一份影院座位操作List<Integer> copy = new ArrayList<>();copy.addAll(cSeat);//将选定的座位和影院已经有的座位比较copy.removeAll(seats);//入过影院的座位数减去操作后的数量 刚好等于我们选得座位则购票成功if (cSeat.size() - copy.size() == seats.size()) {this.hc.cSeat = copy;System.out.println(Thread.currentThread().getName() + "您已经购票 ====> " + this.seats + "还剩下座位===>" + this.hc.cSeat);return true;} else {System.out.println(Thread.currentThread().getName() + "您购票失败 你的选择是 :====> " + this.seats + "还剩下座位是:===>" + this.hc.cSeat);return false;}}}
}
class TestHappyCimema{public static void main(String[] args) {List<Integer> cSeate = new ArrayList<>();cSeate.add(1);cSeate.add(2);cSeate.add(3);cSeate.add(4);cSeate.add(5);cSeate.add(6);cSeate.add(7);List<Integer> c1 = new ArrayList<>();c1.add(2);c1.add(3);List<Integer> c2 = new ArrayList<>();c2 .add(4);c2 .add(3);List<Integer> c3 = new ArrayList<>();c3.add(1);c3.add(5);c3.add(6);HappyCimema hc = new HappyCimema(cSeate,"HappyCimemaa");new Thread(new Client(hc,c1),"亚历山大").start();new Thread(new Client(hc,c2),"马相伯").start();new Thread(new Client(hc,c3),"图灵").start();}
}> "C:\Program Files (x86)\Java\jdk1.8.0_201\bin\java.exe" "-javaagent:D:\intellij\IntelliJ IDEA 2019.1.2\lib\idea_rt.jar=53869:D:\intellij\IntelliJ IDEA 2019.1.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\charsets.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\deploy.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\access-bridge-32.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\cldrdata.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\dnsns.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\jaccess.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\jfxrt.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\localedata.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\nashorn.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\sunec.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\sunjce_provider.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\sunmscapi.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\sunpkcs11.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\zipfs.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\javaws.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\jce.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\jfr.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\jfxswt.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\jsse.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\management-agent.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\plugin.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\resources.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\rt.jar;C:\Users\Administrator.QH-20190223RNEB\IdeaProjects\untitled\out\production\untitled;C:\Users\Administrator.QH-20190223RNEB\IdeaProjects\untitled\src\commons-io-2.6.jar;C:\Users\Administrator.QH-20190223RNEB\IdeaProjects\untitled\src\commons-io-2.6-tests.jar;C:\Users\Administrator.QH-20190223RNEB\IdeaProjects\untitled\src\commons-io-2.6-javadoc.jar;C:\Users\Administrator.QH-20190223RNEB\IdeaProjects\untitled\src\commons-io-2.6-sources.jar;C:\Users\Administrator.QH-20190223RNEB\IdeaProjects\untitled\src\commons-io-2.6-test-sources.jar" concurrently.ThreeDemoPluse.TestHappyCimema
亚历山大您已经购票 ====> [2, 3]还剩下座位===>[1, 4, 5, 6, 7]
图灵您已经购票 ====> [1, 5, 6]还剩下座位===>[4, 7]
马相伯您购票失败 你的选择是 :====> [4, 3]还剩下座位是:===>[4, 7]Process finished with exit code 0
时长多用块中锁,买票操作多端落。
现在挑战方法锁,操作即往一种括。
及时线程来强转,抓住子类来平反。
/***************************使用方法锁***************************/
class Web12306 implements Runnable{int tickets = 100;@Overridepublic void run() {sellTickets();}private synchronized void sellTickets() {Passager p = (Passager) Thread.currentThread();//获得用户想购买的票数int num = p.tickes;int bougt = 0;while (num > 0) {if (tickets <= 0) {System.out.println(Thread.currentThread().getName() + "票没了");return;}try {Thread.sleep(300);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "你已成功购票 "+(++bougt) + " 还剩下 ====》 "+(--tickets));num--;}}
}class Passager extends Thread{int tickes;String pName;public Passager(Runnable target , int tickes, String pName) {super(target,pName);this.tickes = tickes;}
}
class TestWeb12306{public static void main(String[] args) {Web12306 we = new Web12306();Passager p = new Passager(we,8,"支付宝");Passager p1 = new Passager(we,10,"美团");Passager p2 = new Passager(we,3,"微信");p.start();p1.start();p2.start();Passager p3 = new Passager(we,10,"平多多");Passager p4 = new Passager(we,9,"京东");p3.start();p4.start();}
}> "C:\Program Files (x86)\Java\jdk1.8.0_201\bin\java.exe" "-javaagent:D:\intellij\IntelliJ IDEA 2019.1.2\lib\idea_rt.jar=53853:D:\intellij\IntelliJ IDEA 2019.1.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\charsets.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\deploy.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\access-bridge-32.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\cldrdata.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\dnsns.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\jaccess.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\jfxrt.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\localedata.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\nashorn.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\sunec.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\sunjce_provider.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\sunmscapi.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\sunpkcs11.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\ext\zipfs.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\javaws.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\jce.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\jfr.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\jfxswt.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\jsse.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\management-agent.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\plugin.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\resources.jar;C:\Program Files (x86)\Java\jdk1.8.0_201\jre\lib\rt.jar;C:\Users\Administrator.QH-20190223RNEB\IdeaProjects\untitled\out\production\untitled;C:\Users\Administrator.QH-20190223RNEB\IdeaProjects\untitled\src\commons-io-2.6.jar;C:\Users\Administrator.QH-20190223RNEB\IdeaProjects\untitled\src\commons-io-2.6-tests.jar;C:\Users\Administrator.QH-20190223RNEB\IdeaProjects\untitled\src\commons-io-2.6-javadoc.jar;C:\Users\Administrator.QH-20190223RNEB\IdeaProjects\untitled\src\commons-io-2.6-sources.jar;C:\Users\Administrator.QH-20190223RNEB\IdeaProjects\untitled\src\commons-io-2.6-test-sources.jar" concurrently.ThreeDemoPluse.TestWeb12306
支付宝你已成功购票 1 还剩下 ====》 99
支付宝你已成功购票 2 还剩下 ====》 98
支付宝你已成功购票 3 还剩下 ====》 97
支付宝你已成功购票 4 还剩下 ====》 96
支付宝你已成功购票 5 还剩下 ====》 95
支付宝你已成功购票 6 还剩下 ====》 94
支付宝你已成功购票 7 还剩下 ====》 93
支付宝你已成功购票 8 还剩下 ====》 92
平多多你已成功购票 1 还剩下 ====》 91
平多多你已成功购票 2 还剩下 ====》 90
平多多你已成功购票 3 还剩下 ====》 89
平多多你已成功购票 4 还剩下 ====》 88
平多多你已成功购票 5 还剩下 ====》 87
平多多你已成功购票 6 还剩下 ====》 86
平多多你已成功购票 7 还剩下 ====》 85
平多多你已成功购票 8 还剩下 ====》 84
平多多你已成功购票 9 还剩下 ====》 83
平多多你已成功购票 10 还剩下 ====》 82
美团你已成功购票 1 还剩下 ====》 81
美团你已成功购票 2 还剩下 ====》 80
美团你已成功购票 3 还剩下 ====》 79
美团你已成功购票 4 还剩下 ====》 78
美团你已成功购票 5 还剩下 ====》 77
美团你已成功购票 6 还剩下 ====》 76
美团你已成功购票 7 还剩下 ====》 75
美团你已成功购票 8 还剩下 ====》 74
美团你已成功购票 9 还剩下 ====》 73
美团你已成功购票 10 还剩下 ====》 72
京东你已成功购票 1 还剩下 ====》 71
京东你已成功购票 2 还剩下 ====》 70
京东你已成功购票 3 还剩下 ====》 69
京东你已成功购票 4 还剩下 ====》 68
京东你已成功购票 5 还剩下 ====》 67
京东你已成功购票 6 还剩下 ====》 66
京东你已成功购票 7 还剩下 ====》 65
京东你已成功购票 8 还剩下 ====》 64
京东你已成功购票 9 还剩下 ====》 63
微信你已成功购票 1 还剩下 ====》 62
微信你已成功购票 2 还剩下 ====》 61
微信你已成功购票 3 还剩下 ====》 60Process finished with exit code 0
容器并发J U C,数组书写上拷贝。
内部已有安全锁,线程万千易操作。
/**********************************************************/
class CopyOnWriteArray{public static void main(String[] args) {//是线程安全的java.util.concurrent.CopyOnWriteArrayList<Integer> cowal = new java.util.concurrent.CopyOnWriteArrayList<Integer>();cowal.add(1);}
}
原 自学JVAVA---(64)--(内功心法【62】)三大案例再升级相关推荐
- Python自学笔记9:实操案例六(千年虫,购物流程)
Python自学笔记9:实操案例六(千年虫,购物流程) 网课传送门:第155,156讲,https://www.bilibili.com/video/BV1Sw411Z779?p=155 1.千年虫 ...
- 自学机器学习应该避免的三大误区与陷阱
作为人工智能的核心,机器学习成为炙手可热的概念.很多朋友都开始进入机器学习的大军之中,不知道大家在学习的过程中是否注意到"自学机器学习应该避免的三大误区与陷阱"呢?下面小编就和大家 ...
- python爬虫案例-Python3爬虫三大案例实战分享
课程名称: [温馨提示:1. 你可以在PC端浏览器或者微信收藏该页面,以方便你快速找到这个课程:2. 课程相关资料可在课程PC端公告查看下载:3.加入课程后,点(课时)列表即可观看视频 ] 课程须知: ...
- Python自学笔记6:实操案例三(十进制转换二、八、十六进制),手机充值,计算能量消耗,预测未来子女身高
Python自学笔记6:实操案例三(十进制转换二.八.十六进制),手机充值,计算能量消耗,预测未来子女身高 杨淑娟老师网课传送门(非广告):https://www.bilibili.com/video ...
- Python自学笔记10:实操案例七(根据星座测试性格特点、模拟12306火车订票下单)
Python自学笔记10:实操案例七(根据星座测试性格特点.模拟12306火车订票下单) 网课传送门:https://www.bilibili.com/video/BV1Sw411Z779?p=157 ...
- Python自学笔记5:实操案例二(输出出版图书信息、《红楼梦》五位人名、图书音像勋章、身体指标)
Python自学笔记4:实操案例二(输出出版图书信息.<红楼梦>五位人名.图书音像勋章.身体指标) 1.输出出版图书信息 这个没啥难度,就是定义变量然后输出,注意调整格式就行 book_n ...
- 64位Windows2003 Enterprise sp2 上64位Oracle10.2.0.1升级到Oracle10.2.0.3具体步骤
64位Windows2003 Enterprise sp2 上64位Oracle10.2.0.1升级到Oracle10.2.0.3具体步骤 错误描述:64位的Oracle10.2.0.1版本在64位W ...
- iMac 27 2011款增加2块SSD硬盘,保留原机械硬盘,共3块硬盘,升级cpu,修显卡,安装macOS及Win10双系统
iMac 27 2011款增加2块SSD硬盘,保留原机械硬盘,共3块硬盘,升级cpu,修显卡,安装macOS及Win10双系统. 最近想换一个5K屏的iMac,在闲鱼找了一个iMac 27 2017款 ...
- Tapestry携旗下蔻驰等三大品牌再赴进博会;星巴克连续第三年成为进博会支持企业 | 美通企业日报...
今日看点 Tapestry亮相第三届进博会,携旗下三大品牌再赴"进博之约".连续第二年参展的现代奢华配饰及生活方式类品牌公司Tapestry, Inc.(泰佩思琦)携旗下三大品牌C ...
最新文章
- 老板的亲戚给我当助手?
- 视音频技术零基础学习方法
- 《 Spring1之第二次站立会议(重发)》
- python os.removedirs() 和shutil.rmtree()(os.removedirs用于删除非空文件夹和子文件夹、shutil.rmtree用于删除文件夹下所有文件夹和文件)
- 15分钟从零开始搭建支持10w+用户的生产环境(四)
- CSS常用的元素居中方法
- php js记住密码功能,jquery.cookie.js实现用户登录保存密码功能的方法_jquery
- [转]ASP.NET MVC IOC 之AutoFac攻略
- 5.从Paxos到Zookeeper分布式一致性原理与实践---使用ZooKeeper
- 【单目标优化求解】基于matlab海洋捕食者算法(MPA)求解单目标问题【含Matlab源码 478期】
- c++常用备忘(持续更新)
- 总结——达内视频(二)
- 学习数据库的概念,作用
- 安卓夜神模拟器设置代理
- GridView分页 记录总数:15 总页数:2 当前页:1 首页 上一页 下一页 尾页 GO
- Hadoop:MapReduce编程之统计每个订单价格最高的商品信息
- mac book pro touchbar 黑屏不亮的问题解决
- 第三节:TIPTOP ERP系统成本问题集
- ai外呼营销系统_AI外呼?智能外呼或成营销服务一体化中的必备工具
- 在Ubuntu中安装wannier90-3.1.0(非Intel-toolchain)
热门文章
- 移动应用程序设计/开发:jQuery Mobile入门指南
- 世界500强公司要求员工必须熟练掌握的七种工作方法
- 关于applet小程序在浏览器上运行的备注
- python中os system_Python调用系统命令os.system()和os.popen()的实现
- 汉明码纠错java_汉明码纠错的基本原理及优化解决方案
- 2018年python薪资_最好的Python:2017和2018年至今我最喜欢的文章集
- 算法24c语言,EEPROM(AT24C16)页写算法
- 企业中了勒索病毒该怎么办?可以解密吗?
- 时间加减计算器_财政局刚刚回应丨禁止携带计算器,否则成绩无效!
- 【奥斯卡理财星体系 第五章】丨手把手教你从零开始搭建资产配置