实验任务详情:
完成火车站售票程序的模拟。
要求:
(1)总票数1000张;
(2)10个窗口同时开始卖票;
(3)卖票过程延时1秒钟;
(4)不能出现一票多卖或卖出负数号票的情况。
1、实验代码
package test;
class MyThread implements Runnable{
private int ticket = 1000;
public void run() {
for(int i = 0; i < 1000; i++) {
this.sale();
if(i == Math.sqrt(i) * Math.sqrt(i)) {
Thread.currentThread().yield();
}
}
}
public synchronized void sale() {
if(ticket > 0) {
try {
Thread.currentThread().sleep(1000);
}catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"卖票:ticket="+ticket--);
}
}
}
package test;
public class Seven {
public static void main (String args[]) {
MyThread my = new MyThread();
Thread my1 = new Thread(my);
my1.setName("窗口1");
Thread my2 = new Thread(my);
my2.setName("窗口2");
Thread my3 = new Thread(my);
my3.setName("窗口3");
Thread my4 = new Thread(my);
my4.setName("窗口4");
Thread my5 = new Thread(my);
my5.setName("窗口5");
Thread my6 = new Thread(my);
my6.setName("窗口6");
Thread my7 = new Thread(my);
my7.setName("窗口7");
Thread my8 = new Thread(my);
my8.setName("窗口8");
Thread my9 = new Thread(my);
my9.setName("窗口9");
Thread my10 = new Thread(my);
my10.setName("窗口10");
my1.start();
my2.start();
my3.start();
my4.start();
my5.start();
my6.start();
my7.start();
my8.start();
my9.start();
my10.start();
}
}

