zoukankan      html  css  js  c++  java
  • 第九周作业+总结

    完成火车站售票程序的模拟。

    要求:

    (1)总票数1000张;
    (2)10个窗口同时开始卖票;
    (3)卖票过程延时1秒钟;
    (4)不能出现一票多卖或卖出负数号票的情况。

    实验代码:
    package o;
    class NewThread implements Runnable
    {
        private int Ticket = 1000;
        public void run()
      {
            for(int a = 0;a < 10000;a++)
         {
            this.sale();
                           }
        }    
        
    public synchronized void sale()
    {
         if(Ticket > 0)
         {
        	 try{
                   Thread.sleep(1000);
                                         }
        	       catch(Exception boniu)
        	 {
                   boniu.printStackTrace();
                  }
                   System.out.println(Thread.currentThread().getName()+"run,a = "+Ticket--);
            }
       }
    }
    
    public class OMG
    {
            public static void main(String[] args)
         {
            Thread my = new Thread();
            new Thread(my,"window a").start();
            new Thread(my,"window b").start();
            new Thread(my,"window c").start();
            new Thread(my,"window d").start();
            new Thread(my,"window e").start();
            new Thread(my,"window f").start();
            new Thread(my,"window g").start();
            new Thread(my,"window h").start();
            new Thread(my,"window i").start();
            new Thread(my,"window j").start();
         }
    }
    
    实验截图:(BTW 两张截图代表卖票过程延时1s以后)

    这个题是要求我们使用thread完成售票的功能,定义类来模拟售票的案例,售票的动作要被多线程执行。

    知识点+总结:

    在Java中,实现多线程代码有两种方式:一种是继承Thread类;另一种是实现Runnable接口。

    一、Java中使用Thread这个类来描述线程:这个类在java.lang包中。Thread类是专门用来描述线程这类事物。它可以负责在程序执行过程单独的开辟出一片内存区域用来运行当前单独分配的任务。创建新执行线程有两种方法。一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。接下来可以分配并启动该子类的实例。

    Q:为什么要继承Thread类?
    A:因为在Java中使用Thread类描述线程这类事物。也就是说Thread类具备了操作线程这类事物的基本行为(功能)。当书写了一个类继承了Thread这个类,那么我们写的这个子类也就变成线程类了。那么我们书写的这个类也会具备线程的继承操作行为(这些行为其实是从Thread类中继承到的)。我们就可以开启我们自己写的这个线程对象类。

    Q:获取线程名字的方法?
    A:先使用Thread类中的currentThread方法获取到当前正在运行的线程对象,然后再调用getName方法获取线程的名字。

    二、定义类实现Runnable接口

    由于Java只支持单继承,如果有一个类中有部分代码需要多线程来执行,而这个类已经继承了其他的类,这时这个类无法在继承Thread类,可是其中需要多线程执行的任务没有办法交给Thread类。这时就可以让这个类实现Runnable接口,然后创建这个类对象,在把这个类对象交给Thread,那么Thread 就可以执行其中的任务。

    三、File:https://www.cnblogs.com/skywang12345/p/io_08.html
    这个网站里将file总结的比较详细,有使用方法和实例什么的,就懒得ctrl+c了。

    今天上课老师生气了..感觉我也有罪...因为俺一直叭叭叭个不停:(

  • 相关阅读:
    idea使用配置lombok插件
    微服务框架搭建总结点(一):Springboot整合log4j2日志
    git使用笔记:git commit后,如何撤销commit
    SQL Server中char,varchar,nchar, nvarchar的区别
    SQL插入语句插入自增的主键后,如何获取这个新增的主键值
    Linq分组后,再对分组后的每组进行内部排序,获取每组中的第一条记录
    Flutter 笔记
    gch
    JVM内存观察
    mybatis for 循环 中oracle in 条件后 多余1000条处理
  • 原文地址:https://www.cnblogs.com/Duya9ian/p/11727621.html
Copyright © 2011-2022 走看看