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

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

    1)实验代码

    
    package work;
    
    public class Maipiao implements Runnable {
      private int ticket = 1000;
    
      public void run() {
    
          for (int i = 1; i <= 1000; i++) {
              synchronized (this) {
                  if(ticket==0) {
                      System.out.println(Thread.currentThread().getName() + "票已售完!");
                      break;
                  }
                  if (ticket > 0) {
                      ticket--;
                      try {
                          Thread.sleep(0);
                      } catch (InterruptedException e) {
                          e.printStackTrace();
                      }
                      System.out.println(Thread.currentThread().getName() + " 买出一张票    余票:ticket=" + ticket);
    
                  }
              }
          }
    
      }
    }
    
    

    测试

    
    
    package work;
    
    public class Text {
    
      public static void main(String[] args) {
      	Maipiao mt=new Maipiao();
          
          new Thread(mt,"窗口1").start();
          new Thread(mt,"窗口2").start();
          new Thread(mt,"窗口3").start();
          new Thread(mt,"窗口4").start();
          new Thread(mt,"窗口5").start();
          new Thread(mt,"窗口6").start();
          new Thread(mt,"窗口7").start();
          new Thread(mt,"窗口8").start();
          new Thread(mt,"窗口9").start();
          new Thread(mt,"窗口10").start();
          
      }
    
    }
    
    
    

    2)运行截图

    课程总结

    创建多线程的方式
    Java中线程的创建有如下三种基本形式。

    1、继承Thread类,重写该类的run()方法。
    2、实现java.lang.Runnable接口
    3、使用Callable和Future接口创建线程。

    线程睡眠——sleep()

    sleep()是Thread类的静态方法。该方法声明抛出了InterrupedException异常。所以使用时,要么捕捉,要么声明抛出。有两种重载方式:

    
    static void sleep(long millis); //让当前正在执行的线程暂停millis毫秒,并进入阻塞状态,该方法受到系统计时器和线程调度器的精度和准度的影响。
    
    static void sleep(long millis , int nanos);  //让当前正在执行的线程暂停millis毫秒加nanos微秒,并进入阻塞状态,该方法受到系统计时器和线程调度器的
    精度和准度的影响。
    
    

    File类的构造方法

    
    
    public File(String pathname)-->实例化File类的时候,必须设置号路径。
    
    
  • 相关阅读:
    Randomization Tests
    关于Spring中的<context:annotationconfig/>配置
    PUT method support
    在对话框picture control中利用opengl进行绘图
    【学习笔记】《卓有成效的管理者》 第三章 我能贡献什么
    程序员的黄金时代
    nginx webdav配置
    iphone4s 如何强制关机
    并查集
    实战虚拟化存储设计之三MultiPathing
  • 原文地址:https://www.cnblogs.com/ll-dl2018/p/11737435.html
Copyright © 2011-2022 走看看