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


    实验任务详情:

    完成火车站售票程序的模拟。
    要求:
    (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、

  • 相关阅读:
    计算字符串相似度算法——Levenshtein
    信息检索参考网站
    文献检索
    【BZOJ】1684: [Usaco2005 Oct]Close Encounter(暴力+c++)
    【BZOJ】1664: [Usaco2006 Open]County Fair Events 参加节日庆祝(线段树+dp)
    【BZOJ】1644: [Usaco2007 Oct]Obstacle Course 障碍训练课(bfs)
    【BZOJ】1652: [Usaco2006 Feb]Treats for the Cows(dp)
    【BZOJ】1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚(dp/线段树)
    Codeforces Round #265 (Div. 2)
    中秋节模拟赛之冷月葬花魂(被虐瞎)
  • 原文地址:https://www.cnblogs.com/Emotional/p/11741049.html
Copyright © 2020-2023  润新知