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


    实验任务详情:

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

    实验代码

    package 程序;
    
    class New1 implements Runnable{
        private int Railwayticket=1000;
        public void run() {
            int i;
            for(i=0;i<1000;i++) {
            	 synchronized(this) {
                     if(Railwayticket>0) {
                    	 try {
                             Thread.sleep(1000);
                         }
                         catch(InterruptedException e) {
                             e.printStackTrace();
                         }
                         System.out.println(Thread.currentThread().getName()+"出票第"+Railwayticket--+"
    剩余"+Railwayticket--);
                         Railwayticket++;
                         }
                     else {
                        	 System.out.println(Thread.currentThread().getName()+" 票已售完");break;
                         }
                     }
            }
        }
    }
    
    package 程序;
    
    public class New2 {
        public static void main(String args[]) {
        	New1 my=new New1();
            new Thread(my,"窗口一").start();
            new Thread(my,"窗口二").start();
            new Thread(my,"窗口三").start();
            new Thread(my,"窗口四").start();
            new Thread(my,"窗口五").start();
            new Thread(my,"窗口六").start();
            new Thread(my,"窗口七").start();
            new Thread(my,"窗口八").start();
            new Thread(my,"窗口九").start();
            new Thread(my,"窗口十").start();
            
            
        }
    
    }
    

    实验结果

    本周总结
    1、线程的优先级:
    public static final int MIN_PRIORITY :最低优先级
    public static final int NORM_PRIORITY:中等优先级
    public static final int MAX_PRIORITY:最高优先级
    2、Thread 方法
    1)public void start()
    使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
    2)public void run()
    如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。
    3)public final void setName(String name)
    改变线程名称,使之与参数 name 相同。
    4)public final void setPriority(int priority)
    更改线程的优先级。
    5)public final void setDaemon(boolean on)
    将该线程标记为守护线程或用户线程。
    6)public final void join(long millisec)
    等待该线程终止的时间最长为 millis 毫秒。
    7)public void interrupt()
    中断线程。
    8)public final boolean isAlive()
    测试线程是否处于活动状态。
    3、

  • 相关阅读:
    [模板] 主席树
    [模板] 替罪羊树
    [模板] Treap
    [LUOGU] P4342 [IOI1998]Polygon
    [JOYOI] 1051 选课
    poj 1845 数论(唯一分解定理+分治法求等比数列前n项的和mod m的值)
    poj 2418 bst统计字符串
    hdu 3791 二叉排序树
    hdu 3999 二叉排序树
    toj 3711 水题
  • 原文地址:https://www.cnblogs.com/Emotional/p/11741049.html
Copyright © 2020-2023  润新知