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


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

    package 实验七;
    
    public class MyThread implements Runnable {
        public MyThread(String name, int time){
        }
        public MyThread() {
            // TODO Auto-generated constructor stub
        }
        private int ticket=1000;
        private boolean flag=true;
        public void run() {
            while(flag) {
                try {
                    Thread.sleep(1);
                }catch(Exception e) {
                    e.printStackTrace();
                }
                test();
            }
        }
        public synchronized void test() {
            if(ticket<=0){
                flag=false;
                return;
            }
            try{
                Thread.sleep(1);
            }catch(InterruptedException e){
                e.printStackTrace();            
            }
            System.out.println(Thread.currentThread().getName() + "正在卖出第" + (1001-ticket) + "张车票,剩余"+(ticket-1)+"张票");
            --ticket;
        }
    }
    
    package 实验七;
    
    public class Text{
        public static void main(String[] args) {
            MyThread mt=new MyThread();
            Thread t1=new Thread(mt,"卖票窗口1");
            Thread t2=new Thread(mt,"卖票窗口2");
            Thread t3=new Thread(mt,"卖票窗口3");
            Thread t4=new Thread(mt,"卖票窗口4");
            Thread t5=new Thread(mt,"卖票窗口5");
            Thread t6=new Thread(mt,"卖票窗口6");
            Thread t7=new Thread(mt,"卖票窗口7");
            Thread t8=new Thread(mt,"卖票窗口8");
            Thread t9=new Thread(mt,"卖票窗口9");
            Thread t10=new Thread(mt,"卖票窗口10");
            t1.start();
            t2.start();
            t3.start();
            t4.start();
            t5.start();
            t6.start();
            t7.start();
            t8.start();
            t9.start();
            t10.start();
        }
    }
    

    实验结果


    学习总结
    如果有一个类,它已继承了某个类,又想实现多线程,那就可以通过实现Runnable接口来实现。
    Runnable接口只有一个run()函数。
    把一个实现了Runnable接口的对象作为参数产生一个Thread对象,再调用Thread对象的start()函数就可执行并行操作。
    继承Thread类不能资源共享,而Runnable接口可以。

  • 相关阅读:
    《JAVA高级程序设计》第四周作业
    《JAVA高级程序设计》第三周作业
    《Java高级程序设计》第二周作业
    《Java高级程序设计》第一周作业
    javar日志
    JAVA日志
    JAVA日志
    java日志
    JAVA日志
    JAVA日志
  • 原文地址:https://www.cnblogs.com/sqhe2000/p/11740513.html
Copyright © 2020-2023  润新知