第九周课程总结&实验报告(七)

实验报告

实验任务详情:

完成火车站售票程序的模拟。
要求:
(1)总票数1000张;
(2)10个窗口同时开始卖票;
(3)卖票过程延时1秒钟;
(4)不能出现一票多卖或卖出负数号票的情况。

一:实验代码

package 第九周课程总结;
class test implements Runnable {
    static int ticket = 999;
    public void run() {
       for (int i = 0; i < 1000; i++)
         synchronized (this) {
             if (ticket >= 0) {
                 if (ticket == 0) {
                   System.out.println(Thread.currentThread().getName() + "票已售罄");
                     break;} 
                     else {
                try {
                    Thread.sleep(1000);
                     } 
                catch (InterruptedException e) {
                    e.printStackTrace();
                      }
                System.out.println(Thread.currentThread().getName() + "卖出一张票" + " " + "所剩余票为:" + ticket);
                     ticket--;
                 }
             }
         }
    }
}

public class ticket {
    public static void main(String args[]) {
        test t = new test();
        Thread th1 = new Thread(t, "窗口一");
        Thread th2 = new Thread(t, "窗口二");
        Thread th3 = new Thread(t, "窗口三");
        Thread th4 = new Thread(t, "窗口四");
        Thread th5 = new Thread(t, "窗口五");
        Thread th6 = new Thread(t, "窗口六");
        Thread th7 = new Thread(t, "窗口七");
        Thread th8 = new Thread(t, "窗口八");
        Thread th9 = new Thread(t, "窗口九");
        Thread th10 = new Thread(t, "窗口十");

        th1.start();
        th2.start();
        th3.start();
        th4.start();
        th5.start();
        th6.start();
        th7.start();
        th8.start();
        th9.start();
        th10.start();
    }
}

二:运行截图

 

 

 

 

 

 

 

 实验总结:写这实验的时候,遇到了一张票被多次销售的问题,或者只出售一个窗口,然后通过咨询同学发现要使用同步代码块,然后问题就解决了.

posted @ 2019-10-25 12:17  杜姥爷  阅读(131)  评论(0编辑  收藏  举报