Java 多线程 之 wait等待 线程实例
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;
}
//打开售票窗口 学生窗口,普通窗口,军人窗口
//售票窗口 是线程 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;
}
}
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Java 多线程 之 suspend挂起 线程实例
http://www.verejava.com/?id=16992945731073 package com.suspend.resume; /** 题目: 人们在火车站的售票窗口排队买火车票 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() //win...
-
下一篇
C语言入门:输入任意一个正数(奇数),判断是否为质数
C语言永远不会过时 其实学编程关键是学习其思想,如果你精通了一门,再去学其他的时候也很容易上手。C不会过时的,尤其是在unix、linux操作平台上,学好C是必须的。 C跟C++在很多方面也是兼容的,c是c++的基础。 再者c能从很大的程度上帮你了解计算机的发展史,数据结构等方面的知识,很多软件、甚至操作系统中的很大部分是用c来实现的。 还有一些电器芯片的程序,比如电冰箱内制冷系统……可以说用c可以解决一切可能遇到的问题,关键是你要能精通它。 所以放开手脚去大胆的学吧,c永远不会过时 C/C++直播学习群:487875004 源代码: #include.h> void main() { int a,b; while(1) { printf("请输入任意正整数(奇数),判断是否为质数:\n"); scanf("%d",&b); if (b==1) printf("1既不是质数,也不是合数。\n\n"); else {for (a=2;a if (b%a==0)break; if(a printf("这个数不是质数\n"); else printf("这个数是质数\n"); ...
相关文章
文章评论
共有0条评论来说两句吧...

微信收款码
支付宝收款码