Java——多线程(铁路售票系统案例)
问题:铁路售票,一共100张,通过四个窗口卖完。
要求:分别用
继承Thread类 和 实现Runnable接口 去实现
①用继承Thread类去实现
package com.yy.syn;public class Demo3_Ticket {/*** 铁路售票,一共100张,通过四个窗口卖完* 用继承Thread类去实现* 分析:* 四个窗口就相当于四条线程,100张火车票就相当于成员变量* * */public static void main(String[] args) {new Ticket().start(); //创建对象,第一条线程new Ticket().start(); //创建对象,第二条线程new Ticket().start(); //创建对象,第三条线程new Ticket().start(); //创建对象,第四条线程}}class Ticket extends Thread{ //继承Thread类private static int ticket = 100; //四条线程公用这100个成员变量
// private static Object obj = new Object(); //如果用引用数据类型的成员变量当作锁对象,必须是静态的,这里的obj对象应该设置为static静态类型public void run(){ //重写run()方法while(true){synchronized (Ticket.class) { //这里应该变为synchronized(obj){}if(ticket <= 0){break;}System.out.println(getName() + "...这是第" + ticket-- + "号票");}}}
}
②用实现Runnable接口去实现
package com.yy.syn;import java.security.GeneralSecurityException;public class Demo4_Ticket {/*** 铁路售票,一共100张,通过四个窗口卖完* 用实现Runnable接口去实现* 分析:* 四个窗口就相当于四条线程,100张火车票就相当于成员变量* * */public static void main(String[] args) {MyTicket mt = new MyTicket(); //这里只是创建了一次对象new Thread(mt).start();new Thread(mt).start();new Thread(mt).start();new Thread(mt).start();/*Thread t1 = new Thread(mt);//public void start() 使该线程开始执行;Java 虚拟机调用该线程的 run 方法。多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。 t1.start();t1.start();t1.start();t1.start();*/}}
class MyTicket implements Runnable{ //让MyTicket这个类去实现Runnable这个接口private int tickets = 100; //然后,Myticket类里面定义成员变量,这里的票只有100张@Overridepublic void run() {while(true){synchronized (Ticket.class) { //这里的锁对象也可以是this,即 synchronized (this),因为在主函数里面只创建了一次对象,这里的this就相当于主函数里面的mtif(tickets <= 0){break;}try{Thread.sleep(10);} catch(InterruptedException e){e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "...这是第" + tickets-- + "号票" );} //不是Thread的子类,不能直接调用getName,需要Thread.currentThread().getName()}}private String getName() {return null;}}
Java——多线程(铁路售票系统案例)相关推荐
- Sybase数据库助力中国铁路售票系统案例
Sybase数据库助力中国铁路售票系统案例 http://www.weaseek.com 2007年06月01日 00:00:00 来源:搜讯网 发表评论 中国铁路客票发售与预订系统由中央级.地 ...
- 利用JAVA多线程模拟售票系统,对统一资源进行处理
首先多线程处理统一资源的方式有两种 分别介绍一下两者的区别 synchronized与Lock的区别 1.Lock不是Java语言内置的,synchronized是Java语言的关键字 2.synch ...
- Java多线程实现售票系统
学习多线程比较经典的案例就是实现售票系统了. 我们先来看看需求:铁道部发布了一个售票任务,要求销售100张票,要求有5个窗口来进行销售,效果如下: 窗口001正在销售第100张票窗口001正在销售第9 ...
- Java多线程模拟售票系统
Java创建多线程的两种基本方法: 方法1.继承Thread类 (1)定义子类,继承Thread类,重写该类的run()方法作为线程执行体; (2)创建该子类的实例作为线程对象; (3)调用线程对象的 ...
- 基于JAVA网上汽车售票系统计算机毕业设计源码+数据库+lw文档+系统+部署
基于JAVA网上汽车售票系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA网上汽车售票系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语 ...
- java火车票订票系统 论文_毕业设计(论文)-基于JAVA的火车票售票系统.doc
毕业设计(论文)-基于JAVA的火车票售票系统.doc 还剩 45页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点 ...
- 铁路售票系统应用软件需求分析报告
铁路售票系统应用软件需求分析报告 前言: (1)需求分析报告的编写目的 本需求分析报告的目的是规范化本软件的编写,旨在于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,同时提出了本铁路售 ...
- java 模拟火车站售票系统_模拟售票系统java编程
模拟售票系统java编程 /* 项目:用多线程设计一个模拟火车站售票大厅的工作情形. 问题描述:火车站有许多售票窗口,有些开放,有些不开放.顾客进入火车站售票厅后,到某个售票窗口排队等候,排到了就办理 ...
- 铁路售票系统_铁路资讯:复兴号动车、智能京张高铁…中国最高端铁路装备看这里...
今天上午,两年一度的中国国际现代化铁路技术装备展在京开展,会期3天,将集中展示路网建设.客货运输.经营管理.工程建造.技术装备.旅客服务等铁路行业各领域的先进产品及技术. 展会现场 智能京张:将首次实 ...
最新文章
- 防火墙 iptables 禁止某个域名访问
- UEFI引导的系统下装双系统解决方案
- java 格式化解析_java日期格式化、解析
- 【2018.3.24】模拟赛之一-ssl2545 奇数【水题】
- 做个流量站-聚茶吧, 汇聚茶的地方
- horizon流程图_项目实施流程和规范模板(测试方向)
- php写cms,浅谈thinkPHP,国内写CMS利用率最高的框架
- PHP正则表达式转义符对照
- 微信小程序组件之间的传值
- 计算机里找不到用户文件夹,电脑里没有appdata文件夹,c盘users文件夹可以删除吗...
- 魔兽世界-按键精灵脚本(1)-自动小宠物战斗
- 《星际迷航*:舰桥船员》与虚拟现实新趋势
- UVM糖果爱好者教程 - 31.provides_responses?
- OpenHarmony2.0 一站式编译烧录Hi3516标准系统
- 音频信号处理——基音周期
- “创宇ADS”获公安部颁发《计算机信息系统安全专用产品销售许可证》!
- Java程序员 面试如何介绍项目经验? Java程序员应该如何介绍自己的项目经验和自我介绍?面试如何突出自己
- 什么是分布式数据存储
- android百度地图api两点画线,android百度地图:在地图上绘制点、线、多边形、圆形和文字...
- 一个吊打百度网盘的开源神器,还是99年妹子开发的
热门文章
- lokijs可以用mysql_JavaScript实现的内存数据库LokiJS介绍和入门实例_javascript技巧
- (1)《Head First HTML与CSS》学习笔记---HTML基本概念
- angular学习的一些小笔记(中)之表单验证
- Html5中的Video元素使用方法
- JS之 if语句函数 对接事件动作 函数更改css css对接需要换妆的区id或class
- 【快报】基于K2 BPM的新一代协同办公门户实践交流会
- JAVA比较两个List集合的方法
- Spring事务配置方式(一) 拦截器方式配置
- r语言kmodes_聚类分析——k-means算法及R语言实现
- java 当前类_Java获取当前类名的两种方法