package com.swift;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; public class TicketSaleCenter { public static void main(String[] args) {
/*
* 第6题: 编写三各类Ticket、SaleWindow、TicketSaleCenter分别代表票信息、售票窗口、售票中心。   
* * 售票中心分配一定数量的票,由若干个售票窗口进行出售,利用你所学的线程知识来模拟此售票过程。
*/
Ticket tic = new Ticket();
tic.setTotal_num(1000);
SaleWindow win = new SaleWindow(tic);
Thread t1 = new Thread(win, "售票窗1");
Thread t2 = new Thread(win, "售票窗2");
Thread t3 = new Thread(win, "售票窗3");
t1.start();
t2.start();
t3.start();
} } class Ticket { private int total_num;
private int sold_num; public int getTotal_num() {
return total_num;
} public void setTotal_num(int total_num) {
this.total_num = total_num;
} public int getSold_num() {
return sold_num;
} public void setSold_num(int sold_num) {
this.sold_num = sold_num;
} } class SaleWindow implements Runnable { private Ticket tic; public Ticket getTic() {
return tic;
} public void setTic(Ticket tic) {
this.tic = tic;
} public SaleWindow(Ticket tic) {
super();
this.tic = tic;
} @Override
public void run() {
while (true) {
synchronized ("锁") {
int totalNum = tic.getTotal_num();
int soldNum = tic.getSold_num();
if (totalNum > 0) {
totalNum--;
tic.setTotal_num(totalNum);
soldNum++;
tic.setSold_num(soldNum);
System.out.println(Thread.currentThread().getName() + " 已卖出第 " + tic.getSold_num() + " 张票,"
+ "剩余的票数是 " + tic.getTotal_num());
}
}
}
} }

Java多线程 编写三各类Ticket、SaleWindow、TicketSaleCenter分别代表票信息、售票窗口、售票中心。 售票中心分配一定数量的票,由若干个售票窗口进行出售,利用你所学的线程知识来模拟此售票过程。的更多相关文章

  1. Java多线程(三)如何创建线程

    点我跳过黑哥的卑鄙广告行为,进入正文. Java多线程系列更新中~ 正式篇: Java多线程(一) 什么是线程 Java多线程(二)关于多线程的CPU密集型和IO密集型这件事 Java多线程(三)如何 ...

  2. “全栈2019”Java多线程第三十七章:如何让等待的线程无法被中断

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  3. “全栈2019”Java多线程第三十六章:如何设置线程的等待截止时间

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 下一章 "全栈2019"J ...

  4. “全栈2019”Java多线程第三十五章:如何获取线程被等待的时间?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  5. “全栈2019”Java多线程第三十四章:超时自动唤醒被等待的线程

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  6. “全栈2019”Java多线程第三十一章:中断正在等待显式锁的线程

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  7. Java多线程的三种实现方式

    java多线程的三种实现方式 一.继承Thread类 二.实现Runnable接口 三.使用ExecutorService, Callable, Future 无论是通过继承Thread类还是实现Ru ...

  8. “全栈2019”Java多线程第三十三章:await与signal/signalAll

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  9. “全栈2019”Java多线程第三十章:尝试获取锁tryLock()方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

随机推荐

  1. Fiddler设置断点修改Request和Response【转】

    Fiddler设置断点修改Request和Response 设置断点的两种方式:工具栏和命令 1.工具栏:Rules -> Automatic Breakpoints(automatic [ɔː ...

  2. 判断iphone 屏幕大小宏定义

    #define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)  #define IS_IPHONE (UI_USER_I ...

  3. git 基本操作——上传文件与项目分支管理

    创建并转入新分支:git checkout –b XX(其中XX代表分支名称) 将新分支发布在github上: git push origin Branch1 往分支中添加文件:git add mas ...

  4. React中的代码分割

    代码分割想要解决的问题是:经打包工具

  5. 译—— a tale of viewport2

    这一页我们将讨论移动浏览器.如果您对移动设备完全陌生,我建议您首先阅读第一部分关于桌面浏览器的内容,以便在熟悉的环境中做好准备. 移动浏览器的问题 移动浏览器和桌面浏览器比较,最明显的差异是屏幕大小. ...

  6. PAT甲级——1112 Stucked Keyboard (字符串+stl)

    此文章同步发布在我的CSDN上:https://blog.csdn.net/weixin_44385565/article/details/90041078   1112 Stucked Keyboa ...

  7. java获取本机ip的方法

    直接上代码: public class LocalIPUtil { public static String getLocalIp(HttpServletRequest request){ Strin ...

  8. sass预编译器

    突然间就不怎么想用博客写笔记了,想改用有道云笔记 sass sass是一个css的预编译程序, 是基于 ruby 的 先要去安装 ruby 在命令行中, 执行以下两句代码(安装sass的), 连网操作 ...

  9. windows下使用MYSQL的mysqldumpslow进行慢日志分析

    1.首先安装好perl环境. 2.在dos环境中,切换到perl目录中,例如我的目录是 dos 命令 cd c:\Perl\bin 3.在此目录输入perl mysqldumpslow的路径\mysq ...

  10. ef 操作 mysql 中文乱码问题

    1.保证mysql数据的编码为utf8 启动mysql mysql -hlocalhost -uroot -p 输入密码 show VARIABLES like 'character_%'; SET  ...