java 线程池 wait,Java 多线程 之 wait等待 线程实例
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等待 线程实例相关推荐
- java 线程管理_Java提供的线程池来创建多线程,进一步优化线程管理。
提供最快小儿的阶段是发育生长. 根据型德增长模哈罗,程池为(增长率应,为投转化资要使储蓄全部,率为储蓄,本-比为产量若资. 在凯主义论中的经济周恩斯期理,建多进关系理的原理乘数和加速原是(.不能现代领 ...
- java 线程池 -- (Java并发)
池技术是作为一个架构师必须深刻理解的东西,比如线程池,连接池,对象池,内存池等. 首先需要问一个问题:在c/c++ 编程中,你是如何操作一个任务的或者给一个线程添加任务的?如果你很清楚,那么你知道Ja ...
- 测试线程池(Java)
测试线程池(Java) package src.thread;import java.util.concurrent.ExecutorService; import java.util.concurr ...
- java线程池测试,Java线程池【测试Markdown样式】
Java 线程池 目录 重点关注几个问题: 线程池中线程的生命周期 线程池启动后,如何初始化工作线程 线程数如何变化 如何管理空闲的线程 提交任务给工作线程.到工作线程完成任务的过程 线程池内异常处理 ...
- Java线程池ThreadPoolExecutor使用和分析(三) - 终止线程池原理
相关文章目录: Java线程池ThreadPoolExecutor使用和分析(一) Java线程池ThreadPoolExecutor使用和分析(二) - execute()原理 Java线程池Thr ...
- 为什么用线程池?解释下线程池参数? -- Java面试
为什么用线程池 降低资源消耗.提高线程利用率,降低创建和小回县城的损耗. 提高响应速度.任务来了,直接有线程可用,而不是先创建线程再执行. 提高线程的可管理性.使用线程池可以统一分配调优监控. 解释下 ...
- c语言数据库线程池,C语言多线程中运行线程池,在线程池中运行线程池,,传递的结构体参数值为空/NULL/0...
typedef struct { }LoanInfos; typedef struct{ int cp;//主线程编号 int thread;//线程编号 long int time; int arr ...
- 项目使用线程池_并发编程系列1:线程池的架构实现、大小配置、及四种线程池使用...
△ 公众号回复关键词"架构" 即可领取<1500+BAT架构及面试专题合集> 本篇为线程池系列文章之一,不经常使用线程池的童鞋,还有对几种线程的使用不甚了解的童鞋,可以 ...
- 线程池的五种状态及创建线程池的几种方式
上篇<Java线程的6种状态详解及创建线程的4种方式> 前言:我们都知道,线程是稀有资源,系统频繁创建会很大程度上影响服务器的使用效率,如果不加以限制,很容易就会把服务器资源耗尽.所以,我 ...
- 【Android 异步操作】线程池 ( Worker 简介 | 线程池中的工作流程 runWorker | 从线程池任务队列中获取任务 getTask )
文章目录 一.线程池中的 Worker ( 工作者 ) 二.线程池中的工作流程 runWorker 三.线程池任务队列中获取任务 getTask 在博客 [Android 异步操作]线程池 ( 线程池 ...
最新文章
- Linux-rmdir命令
- How is error message Could not create note displayed from backend to ui
- 第一阶段冲刺(第七天)
- javaparser_JavaParser入门:以编程方式分析Java代码
- ctfshow-萌新-web14( 曲线救国-POST请求绕过获取网站敏感信息)
- 普通人学python有意义吗-风变编程:普通人学Python有意义吗?
- 重装系统后如何配置网络
- GPS从入门到放弃(十六)--- 卫星时钟误差和卫星星历误差
- 字符编码Unicode原理
- 软件测试用例常用七大方法
- Linux下获取外网IP地址的方法
- 服务器网络监控系统方案
- 令人吐血的女大学生平安信.
- SEU-2020-卓越大赛面试
- 线程切换哪家强?RxJava与Flow的操作符对比
- 软工大作业·历物语(一)
- 这对CP我磕了!Adobe XD与Flutter插件官宣了……
- 【计量经济学】简单回归模型
- MySQL 数据存储和优化------MySQL架构原理 ---- (架构---索引---事务---锁---集群---性能---分库分表---实战---运维)持续更新
- Codis的架构设计