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()
//win2.setPriority(Thread.MAX_PRIORITY);
//win1.start();
win2.start();
try {
Thread.sleep(2000);//2 妙的時候 線程停止 stop()
win2.suspend();//展廳
Thread.sleep(4000);
win2.resume();
} catch (Exception e) {
e.printStackTrace();
}
}
}
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 void sale() {
try {
while (i < persons.length - 1) {
i++;
String person = persons[i];
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;
}
}