package com.wait.notify;

/**

题目: 人们在火车站的售票窗口排队买火车票

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();

}

}

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 synchronized void sale() {

try {

while (i < persons.length - 1) {

i++;

String person = persons[i];

if ("宋沙".equals(person)) {

this.wait();

}

if ("徐文晓".equals(person)) {

this.notify();

}

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;

}

}

java 线程池 wait,Java 多线程 之 wait等待 线程实例相关推荐

  1. java 线程管理_Java提供的线程池来创建多线程,进一步优化线程管理。

    提供最快小儿的阶段是发育生长. 根据型德增长模哈罗,程池为(增长率应,为投转化资要使储蓄全部,率为储蓄,本-比为产量若资. 在凯主义论中的经济周恩斯期理,建多进关系理的原理乘数和加速原是(.不能现代领 ...

  2. java 线程池 -- (Java并发)

    池技术是作为一个架构师必须深刻理解的东西,比如线程池,连接池,对象池,内存池等. 首先需要问一个问题:在c/c++ 编程中,你是如何操作一个任务的或者给一个线程添加任务的?如果你很清楚,那么你知道Ja ...

  3. 测试线程池(Java)

    测试线程池(Java) package src.thread;import java.util.concurrent.ExecutorService; import java.util.concurr ...

  4. java线程池测试,Java线程池【测试Markdown样式】

    Java 线程池 目录 重点关注几个问题: 线程池中线程的生命周期 线程池启动后,如何初始化工作线程 线程数如何变化 如何管理空闲的线程 提交任务给工作线程.到工作线程完成任务的过程 线程池内异常处理 ...

  5. Java线程池ThreadPoolExecutor使用和分析(三) - 终止线程池原理

    相关文章目录: Java线程池ThreadPoolExecutor使用和分析(一) Java线程池ThreadPoolExecutor使用和分析(二) - execute()原理 Java线程池Thr ...

  6. 为什么用线程池?解释下线程池参数? -- Java面试

    为什么用线程池 降低资源消耗.提高线程利用率,降低创建和小回县城的损耗. 提高响应速度.任务来了,直接有线程可用,而不是先创建线程再执行. 提高线程的可管理性.使用线程池可以统一分配调优监控. 解释下 ...

  7. c语言数据库线程池,C语言多线程中运行线程池,在线程池中运行线程池,,传递的结构体参数值为空/NULL/0...

    typedef struct { }LoanInfos; typedef struct{ int cp;//主线程编号 int thread;//线程编号 long int time; int arr ...

  8. 项目使用线程池_并发编程系列1:线程池的架构实现、大小配置、及四种线程池使用...

    △ 公众号回复关键词"架构" 即可领取<1500+BAT架构及面试专题合集> 本篇为线程池系列文章之一,不经常使用线程池的童鞋,还有对几种线程的使用不甚了解的童鞋,可以 ...

  9. 线程池的五种状态及创建线程池的几种方式

    上篇<Java线程的6种状态详解及创建线程的4种方式> 前言:我们都知道,线程是稀有资源,系统频繁创建会很大程度上影响服务器的使用效率,如果不加以限制,很容易就会把服务器资源耗尽.所以,我 ...

  10. 【Android 异步操作】线程池 ( Worker 简介 | 线程池中的工作流程 runWorker | 从线程池任务队列中获取任务 getTask )

    文章目录 一.线程池中的 Worker ( 工作者 ) 二.线程池中的工作流程 runWorker 三.线程池任务队列中获取任务 getTask 在博客 [Android 异步操作]线程池 ( 线程池 ...

最新文章

  1. Linux-rmdir命令
  2. How is error message Could not create note displayed from backend to ui
  3. 第一阶段冲刺(第七天)
  4. javaparser_JavaParser入门:以编程方式分析Java代码
  5. ctfshow-萌新-web14( 曲线救国-POST请求绕过获取网站敏感信息)
  6. 普通人学python有意义吗-风变编程:普通人学Python有意义吗?
  7. 重装系统后如何配置网络
  8. GPS从入门到放弃(十六)--- 卫星时钟误差和卫星星历误差
  9. 字符编码Unicode原理
  10. 软件测试用例常用七大方法
  11. Linux下获取外网IP地址的方法
  12. 服务器网络监控系统方案
  13. 令人吐血的女大学生平安信.
  14. SEU-2020-卓越大赛面试
  15. 线程切换哪家强?RxJava与Flow的操作符对比
  16. 软工大作业·历物语(一)
  17. 这对CP我磕了!Adobe XD与Flutter插件官宣了……
  18. 【计量经济学】简单回归模型
  19. MySQL 数据存储和优化------MySQL架构原理 ---- (架构---索引---事务---锁---集群---性能---分库分表---实战---运维)持续更新
  20. Codis的架构设计

热门文章

  1. 关于XShell 启动虚拟机的weblogic并在本地打开oracle-weblogic 有关部署
  2. Windows下gmssl使用记录
  3. python 列表的推导器和内置函数
  4. iframe里面的元素触发父窗口元素事件的jquery代码 转
  5. vue_props div赋值props定义变量 templete获取
  6. iOS-关于cell的重叠问题
  7. 排序第一天,回忆关键字
  8. 公司人才招聘管理系统
  9. AJAX之表单即时验证
  10. 聊聊毕业设计系列 --- 系统实现