http://www.verejava.com/?id=16992949250274

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;}//打开售票窗口  学生窗口,普通窗口,军人窗口  //售票窗口 是线程 Threadpublic 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();}}@Overridepublic void run() {//开始售票sale();}public String getName() {return name;}public void setName(String name) {this.name = name;}}

http://www.verejava.com/?id=16992949250274

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

  1. java 线程池 wait,Java 多线程 之 wait等待 线程实例

    package com.wait.notify; /** 题目: 人们在火车站的售票窗口排队买火车票 1. 北京西站开门 2. 打开售票窗口 3. 北京西站有10张去长沙的票 4. 打开2个售票窗口, ...

  2. Java 多线程(七) 线程间的通信

    Java 多线程(七) 线程间的通信--wait及notify方法 线程间的相互作用 线程间的相互作用:线程之间需要一些协调通信,来共同完成一件任务. Object类中相关的方法有两个notify方法 ...

  3. Java多线程基础-6:线程安全问题及解决措施,synchronized关键字与volatile关键字

    线程安全问题是多线程编程中最典型的一类问题之一.如果多线程环境下代码运行的结果是符合我们预期的,即该结果正是在单线程环境中应该出现的结果,则说这个程序是线程安全的. 通俗来说,线程不安全指的就是某一代 ...

  4. Java 多线程(三) 线程的生命周期及优先级

    Java 多线程(三) 线程的生命周期及优先级 线程的生命周期 线程的生命周期:一个线程从创建到消亡的过程. 如下图,表示线程生命周期中的各个状态: 线程的生命周期可以分为四个状态: 1.创建状态: ...

  5. Java多线程系列(五):线程池的实现原理、优点与风险、以及四种线程池实现

    为什么需要线程池 我们有两种常见的创建线程的方法,一种是继承Thread类,一种是实现Runnable的接口,Thread类其实也是实现了Runnable接口.但是我们创建这两种线程在运行结束后都会被 ...

  6. Java 多线程(八) 线程状态图

    Java 多线程(八) 线程状态图 结合多线程的学习过程,介绍线程的状态图,随着学习的深入,这幅图不断加入新的内容. 一.线程基本状态图 这幅图是在Java 多线程(三) 线程的生命周期及优先级出现过 ...

  7. Java多线程详解(线程不安全案例)

    嗨喽-小伙伴们我又来了, 通过前面两章的学习,我们了解了线程的基本概念和创建线程的四种方式. 附上链接: 1.  Java多线程详解(基本概念)​​​​​​​ 2. Java多线程详解(如何创建线程) ...

  8. JAVA多线程执行,等待返回结果,再执行

    JAVA多线程执行,等待返回结果,再执行 1.实现callable接口 1)配置线程池 package com.neusoft.demo.server.config;import org.spring ...

  9. java 等待线程结束 框架_深入理解Java多线程与并发框架——线程的状态

    欢迎关注专栏<Java架构筑基>--专注于Java技术的研究与分享!Java架构筑基​zhuanlan.zhihu.comJava架构筑基--专注于Java技术的研究与分享! 后续文章将首 ...

最新文章

  1. Google公开其JavaScript工具:Closure Compiler
  2. 关于对 NUMA 理解(学习笔记,便于以后查阅)
  3. 深度学习笔记8 数据预处理
  4. Boost:使用max_element()算法以及transform_iterator和length()函数来查找最长的 向量数组中的4分量向量
  5. C++ std::condition_variable wait() wait_for() 区别
  6. 豆瓣9.8分,周志明的《凤凰架构》,高屋建瓴,推荐(送书)
  7. JQuery中的.attr()与.removeAttr()
  8. 开源公司黄页之阿里巴巴开源软件推荐(一)
  9. Matlab基本函数
  10. 把握linux内核设计思想系列【转】
  11. Android字符小写转大写,大写转小写
  12. 裴蜀定理(详细定义+应用+模板)
  13. 硬盘柱面损坏怎么办_硬盘在坏道检测中出现了要多少个损坏柱面才说明这个硬盘废了?...
  14. 解决windows电脑蓝屏的方法
  15. [BZOJ 4763]雪辉
  16. Spark累加器的作用和使用
  17. Docker监控远程服务器
  18. torch.contiguous()函数用法
  19. java 拨通电话_android应用调用系统拨打电话
  20. 武夷岩茶PK铁观音(南北乌龙之我见--清风云雨)

热门文章

  1. 软件测试工程师除了找BUG,还能干啥?
  2. pdo mysql fedora_fedora编译安装php5.5
  3. python 内置函数_python的内置函数、方法
  4. linux调用线程函数,作为线程调用的C函数-Linux Userland程序
  5. 暴涨2000+? 2021年软件测试平均薪资出来了,我坐不住了
  6. jmeter的java请求参数设置_Jmeter中json数据参数化、断言设置
  7. 0501 0503 模块区别_金川区西门子控制器模块CPU313C哪里有
  8. centos7 怎么封装自己的镜像_在Centos7系统上制作一个7系的Docker镜像
  9. keras实现DeepDream
  10. 2021全国计算机一级考试试题,2021年全国计算机等级考试一级真题附答案-20210414083709.pdf-原创力文档...