• 实验& 报告7


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

         //会出现每个线程都卖1000张票的情况,因为对象不唯一会导致每个线程对象都有一份独立的成员属性;
    

    class MyThread implements Runnable{
    private int ticket = 1000;
    public void run() {
    for (int i=0;i<2000;i++) {
    synchronized (this) {
    if (ticket>0) {
    try {
    Thread.sleep(1000);
    }catch (InterruptedException e) {
    e.printStackTrace();
    }
    System.out.println(Thread.currentThread().getName()+"售票:ticket = " + ticket--);
    }
    }
    }
    }

    };
    public class practice1 {
    public static void main (String args[]) {
    MyThread my = new MyThread();
    Thread my1 = new Thread(my);
    my1.setName("窗口1");

        Thread my2 = new Thread(my);
        my2.setName("窗口2");
        
        Thread my3 = new Thread(my);
        my3.setName("窗口3");
        
        Thread my4 = new Thread(my);
        my4.setName("窗口4");
        
        Thread my5 = new Thread(my);
        my5.setName("窗口5");
        
        Thread my6 = new Thread(my);
        my6.setName("窗口6");
        
        Thread my7 = new Thread(my);
        my7.setName("窗口7");
        
        Thread my8 = new Thread(my);
        my8.setName("窗口8");
        
        Thread my9 = new Thread(my);
        my9.setName("窗口9");
        
        Thread my10 = new Thread(my);
        my10.setName("窗口10");
        
        my1.start();
        my2.start();
        my3.start();
        my4.start();
        my5.start();
        my6.start();
        my7.start();
        my8.start();
        my9.start();
        my10.start();
         
    }
    

    }


    本周总结
    线程操作:注意方法


          //线程的休眠
    

    在线程中允许一个线程进行暂时的休眠,直接使用Thread.sleep()方法即可。
    sleep()–线程休眠
    sleep()方法是Thread类中的一个静态方法,需要一个用于指定该线程休眠的时间,该时间以毫秒为单位。
    在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。
    static --- 说明可以由Thread类名称调用。
    Throws ---表示如果有异常要在调用此方法处处理异常。所以sleep()方法要有InterruptedException 异常处理,而且sleep()调用方法通常为Thread.sleep(500) ;形式。
    创建线程的另一种方法是实现Runnable接口。Runnable接口中只有一个run()方法,它非Thread类子类的类提供的一种激活方式。一个类实现Runnable接口后,并不代表
    该类是一个“线程”类,不能直接运行,必须通过Thread实例才能创建并运行线程。

    Runnable接口
    定义实现Runnable接口的类,并实现该类中的run()方法。
    建立一个Thread对象,并将实现的Runnable接口的类的对象作为参数传入Thread类的构造方法。
    通过Thread类中的start()方法启动线程,并运行。
    注:直接调用Thread类或Runnable类对象的run()方法是无法启动线程的,这只是一个简单的方法调用必须通过Thread方法中的start()才行。//

  • 相关阅读:
    Directory类的使用、Alt+Shift+F10可以查看其命名空间
    用户控件
    图像检测算法Halcon 10的使用
    MD5加密的使用
    AppDomain.CurrentDomain.AssemblyResolve
    记事本程序
    C#文件操作
    部分常用控件
    TreeView的使用
    ComboBox的使用
  • 原文地址:https://www.cnblogs.com/JCclub/p/11735643.html
Copyright © 2020-2023  润新知