import work.Person;
/**
* 使用多线程的方式来模拟多个窗口买票
要求销售100张火车票,要求有4个窗口来进行销售, 请编写多线程程序来模拟这个效果
* @author MECHREVO
*
*/
public class WorkSell extends Thread{
public WorkSell() {
}
public WorkSell(String name) {
super(name);
}
static WorkSell s1 = new WorkSell();
//定义票数为静态变量,所有对象共用一个
public static int i=100;
@Override
public void run() {
while(true) {
//加锁实现线程同步
synchronized (s1) {
if(i>0) {
System.out.println(getName()+":正在售卖第---->"+(i--)+"张票");
try {
sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else {
System.err.println(getName()+"票已经售完!!!");
break;
}
}
}
}
}
主函数
public class WorkTest {
private WorkSell work;
public static void main(String[] args) {
WorkSell w1 = new WorkSell("窗口1");
WorkSell w2 = new WorkSell("窗口2");
WorkSell w3 = new WorkSell("窗口3");
WorkSell w4 = new WorkSell("窗口4");
w2.start();
w3.start();
w4.start();
w1.start();
}
}