问题:铁路售票,一共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——多线程(铁路售票系统案例)相关推荐

  1. Sybase数据库助力中国铁路售票系统案例

    Sybase数据库助力中国铁路售票系统案例 http://www.weaseek.com  2007年06月01日 00:00:00   来源:搜讯网 发表评论 中国铁路客票发售与预订系统由中央级.地 ...

  2. 利用JAVA多线程模拟售票系统,对统一资源进行处理

    首先多线程处理统一资源的方式有两种 分别介绍一下两者的区别 synchronized与Lock的区别 1.Lock不是Java语言内置的,synchronized是Java语言的关键字 2.synch ...

  3. Java多线程实现售票系统

    学习多线程比较经典的案例就是实现售票系统了. 我们先来看看需求:铁道部发布了一个售票任务,要求销售100张票,要求有5个窗口来进行销售,效果如下: 窗口001正在销售第100张票窗口001正在销售第9 ...

  4. Java多线程模拟售票系统

    Java创建多线程的两种基本方法: 方法1.继承Thread类 (1)定义子类,继承Thread类,重写该类的run()方法作为线程执行体; (2)创建该子类的实例作为线程对象; (3)调用线程对象的 ...

  5. 基于JAVA网上汽车售票系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA网上汽车售票系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA网上汽车售票系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语 ...

  6. java火车票订票系统 论文_毕业设计(论文)-基于JAVA的火车票售票系统.doc

    毕业设计(论文)-基于JAVA的火车票售票系统.doc 还剩 45页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点 ...

  7. 铁路售票系统应用软件需求分析报告

    铁路售票系统应用软件需求分析报告 前言: (1)需求分析报告的编写目的 本需求分析报告的目的是规范化本软件的编写,旨在于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,同时提出了本铁路售 ...

  8. java 模拟火车站售票系统_模拟售票系统java编程

    模拟售票系统java编程 /* 项目:用多线程设计一个模拟火车站售票大厅的工作情形. 问题描述:火车站有许多售票窗口,有些开放,有些不开放.顾客进入火车站售票厅后,到某个售票窗口排队等候,排到了就办理 ...

  9. 铁路售票系统_铁路资讯:复兴号动车、智能京张高铁…中国最高端铁路装备看这里...

    今天上午,两年一度的中国国际现代化铁路技术装备展在京开展,会期3天,将集中展示路网建设.客货运输.经营管理.工程建造.技术装备.旅客服务等铁路行业各领域的先进产品及技术. 展会现场 智能京张:将首次实 ...

最新文章

  1. 防火墙 iptables 禁止某个域名访问
  2. UEFI引导的系统下装双系统解决方案
  3. java 格式化解析_java日期格式化、解析
  4. 【2018.3.24】模拟赛之一-ssl2545 奇数【水题】
  5. 做个流量站-聚茶吧, 汇聚茶的地方
  6. horizon流程图_项目实施流程和规范模板(测试方向)
  7. php写cms,浅谈thinkPHP,国内写CMS利用率最高的框架
  8. PHP正则表达式转义符对照
  9. 微信小程序组件之间的传值
  10. 计算机里找不到用户文件夹,电脑里没有appdata文件夹,c盘users文件夹可以删除吗...
  11. 魔兽世界-按键精灵脚本(1)-自动小宠物战斗
  12. 《星际迷航*:舰桥船员》与虚拟现实新趋势
  13. UVM糖果爱好者教程 - 31.provides_responses?
  14. OpenHarmony2.0 一站式编译烧录Hi3516标准系统
  15. 音频信号处理——基音周期
  16. “创宇ADS”获公安部颁发《计算机信息系统安全专用产品销售许可证》!
  17. Java程序员 面试如何介绍项目经验? Java程序员应该如何介绍自己的项目经验和自我介绍?面试如何突出自己
  18. 什么是分布式数据存储
  19. android百度地图api两点画线,android百度地图:在地图上绘制点、线、多边形、圆形和文字...
  20. 一个吊打百度网盘的开源神器,还是99年妹子开发的

热门文章

  1. lokijs可以用mysql_JavaScript实现的内存数据库LokiJS介绍和入门实例_javascript技巧
  2. (1)《Head First HTML与CSS》学习笔记---HTML基本概念
  3. angular学习的一些小笔记(中)之表单验证
  4. Html5中的Video元素使用方法
  5. JS之 if语句函数 对接事件动作 函数更改css css对接需要换妆的区id或class
  6. 【快报】基于K2 BPM的新一代协同办公门户实践交流会
  7. JAVA比较两个List集合的方法
  8. Spring事务配置方式(一) 拦截器方式配置
  9. r语言kmodes_聚类分析——k-means算法及R语言实现
  10. java 当前类_Java获取当前类名的两种方法