http://www.verejava.com/?id=16992956384976
package com.priority; /* 题目: 人们在火车站的售票窗口排队买火车票 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]; 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; } }
http://www.verejava.com/?id=16992956384976