zoukankan      html  css  js  c++  java
  • 第九周课程总结&实验报告

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

    package test;
      
      class MyThread 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--);
                         } 
                   }
           }
         }
     }
     public class Main
     {
         public static void main(String[] args)
         {
             MyThread my=new MyThread();
             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、线程的优先级
    每一个 Java 线程都有一个优先级,这样有助于操作系统确定线程的调度顺序。
    Java 线程的优先级是一个整数,其取值范围是 1 (Thread.MIN_PRIORITY ) - 10 (Thread.MAX_PRIORITY )。
    默认情况下,每一个线程都会分配一个优先级 NORM_PRIORITY(5)。
    2、Java 提供了三种创建线程的方法:
    通过实现 Runnable 接口;
    通过继承 Thread 类本身;
    通过 Callable 和 Future 创建线程。

    为了实现 Runnable,一个类只需要执行一个方法调用 run(),
    public void run();
    新线程创建之后,你调用它的 start() 方法它才会运行。
    3、Thread类的常用方法
    String getName()  返回该线程的名称。
    void setName(String name)  改变线程名称,使之与参数 name 相同。
    int getPriority()   返回线程的优先级。
    void setPriority(int newPriority)   更改线程的优先级。
    boolean isDaemon()   测试该线程是否为守护线程。
    void setDaemon(boolean on)  将该线程标记为守护线程或用户线程。
    static void sleep(long millis)
    void interrupt()  中断线程。
    static void yield()  暂停当前正在执行的线程对象,并执行其他线程。
    void join()  等待该线程终止。
    void run()
    void start()
    从Object类继承来的方法  void notify() void wait()

  • 相关阅读:
    用于视频行为识别的双流卷积网络
    python更改默认版本
    ubuntu16安装ROS(包括win10子系统ubuntu同样能用)
    js中的new做了什么?
    Promise是什么?
    滚动轴 scroll
    什么是ES6?
    什么是token及怎样生成token
    mongodb 删库跑路
    css如何设置背景图片?background属性添加背景图片
  • 原文地址:https://www.cnblogs.com/zl010206/p/11740796.html
Copyright © 2011-2022 走看看