实验任务详情:
完成火车站售票程序的模拟。
要求:
(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(); } }