Java 多线程 之 火车站售票实例
http://www.verejava.com/?id=16992917973569
package com.thread; /** 题目: 人们在火车站的售票窗口排队买火车票 1. 北京西站开门 2. 打开售票窗口 3. 北京西站有10张去长沙的票 4. 打开2个售票窗口, 5 假设每个售票窗口每隔1秒钟买完一张票 1. 根据 名词 找类 人们(Person), 火车站(Station),火车票(Ticket) , 售票窗口e 是火车站的线程 */ import java.util.*; public class TestTrain { public static void main(String[] args) { //火车西站开门 Station station = new Station("火车西站"); //开窗口 //Thread win1=station.openWindow("普通窗口"); Thread win2 = station.openWindow("学生窗口"); //窗口1 开始售票 //设置线程优先级 setPriority() //win2.setPriority(Thread.MAX_PRIORITY); //win1.start(); win2.start(); try { Thread.sleep(2000);//2 妙的时候 线程停止 stop() //interrupt() 打断线程 //win2.stop(); win2.suspend();//展厅 Thread.sleep(4000); win2.resume(); } catch (Exception e) { e.printStackTrace(); } } } class Station implements Runnable { private String name;//火车站的名称 private String[] persons = { "赵海洋", "王锐", "宋沙", "李欣伟", "徐文晓", "孟令强", "王大卫", "李宝琴", "王浩" };// 火车站排队 买票的人 private int i = -1; public Station(String name) { super(); this.name = name; } // 打开售票窗口 学生窗口,普通窗口,军人窗口 //售票窗口 是线程 Thread public Thread openWindow(String name) { return new Thread(this, name); } //火车站售票 public void sale() { try { while (i < persons.length - 1) { i++; String person = persons[i]; System.out.println(person + " " + Thread.currentThread().getName() + " 买了一张北京到上海的火车票"); Thread.sleep(2000); } } catch (Exception e) { e.printStackTrace(); } } @Override public void run() { //开始售票 sale(); } public String getName() { return name; } public void setName(String name) { this.name = name; } }

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java 多线程 之 银行ATM实例
http://www.verejava.com/?id=16992914422268 package com.thread; import java.util.Scanner; public class TestBank { public static void main(String[] args) { Bank bank = new Bank(); Thread lingming = new Thread(bank, "李明"); Thread wangtao = new Thread(bank, "王涛"); lingming.start(); try { Thread.sleep(4000); } catch (InterruptedException e) { e.printStackTrace(); } wangtao.start(); } } class Bank implements Runnable { public static int money = 1000; @Override public synchronized void run() { System.o...
- 下一篇
一道面试题考验了你对java的理解程度
简介 最近有点忙,很久没更新文章了,后面会慢慢恢复...回顾正题 最近看到一篇文章,关于一道面试题,先看一下题目,如下: public static void main(String[] args) { Integer a = 1; Integer b = 2; System.out.printf("a = %s, b = %s\n", a, b); swap(a, b); System.out.printf("a = %s, b = %s\n", a, b); } public static void swap(Integer a, Integer b) { // TODO 实现 } 有人可能在没经过仔细考虑的情况下,给出以下的答案 // 特别提醒,这是错误的方式 // 特别提醒,这是错误的方式 // 特别提醒,这是错误的方式 public static void swap(Integer a, Integer b) { // TODO 实现 Integer temp = a; a = b; b = temp; } 很遗憾,这是错误的。重要的事注释三遍 那么为什么错误,原因是什么? ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装Docker,最新的服务器搭配容器使用
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker快速安装Oracle11G,搭建oracle11g学习环境