实验任务详情:
完成火车站售票程序的模拟。
要求:
(1)总票数1000张;
(2)10个窗口同时开始卖票;
(3)卖票过程延时1秒钟;
(4)不能出现一票多卖或卖出负数号票的情况。
public class ticket{ public static void main(String[] args) { w mt=new w(); new Thread(mt,"窗口1").start(); new Thread(mt,"窗口2").start(); new Thread(mt,"窗口3").start(); new Thread(mt,"窗口4").start(); new Thread(mt,"窗口5").start(); new Thread(mt,"窗口6").start(); new Thread(mt,"窗口7").start(); new Thread(mt,"窗口8").start(); new Thread(mt,"窗口9").start(); new Thread(mt,"窗口10").start(); } } class w implements Runnable{ private int ticket=1000; public void run() { for(int i=0;i<1000;i++) { synchronized(this) { if(ticket>0) { try { Thread.sleep(1000); } catch(InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+ "余票:"+ticket--); } } } } }
学习总结:
1.主要学习了多线程的实现;
2.主要学习了Thread中的方法;
3.主要学习了取得和设置线程名称、判断线程是否启动、线程的强制转换、线程的休眠、中断、礼让等等。
4.主要学习了同步与死锁,并通过窗口卖票的代码对这周的学习内容有了更好的巩固。