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


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

    package Zuoye7;
    class MyThread implements Runnable{
     private int ticket=1000;
        public void run() { 
        	for(int i=0;i<1001;i++) {
        		this.sales();
        	}
        }
         public  synchronized void sales() {                          
                    if(ticket>0) {                                  
                        try {
                            Thread.sleep(1000);
                        }
                        catch(InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println(Thread.currentThread().getName()+"售票:"+ticket--);    
                    }
                }
            };
    public class Ticket {
        public static void main(String[] args) {
            MyThread mt1=new MyThread();
            new Thread(mt1,"窗口1").start();
            new Thread(mt1,"窗口2").start();
            new Thread(mt1,"窗口3").start();
            new Thread(mt1,"窗口4").start();
            new Thread(mt1,"窗口5").start();
            new Thread(mt1,"窗口6").start();
            new Thread(mt1,"窗口7").start();
            new Thread(mt1,"窗口8").start();
            new Thread(mt1,"窗口9").start();
            new Thread(mt1,"窗口10").start();
        }
    }
    

    学习总结
    线程的状态
    (1)取得和设置线程名称
    通过getName和setName;
    如果没有设置名字,系统会为其自动分配名称,格式Thread-Xx。
    名称可能相同,id不可能相同。
    Java中所有线程都是同时启动的,所有main线程结束不会对其他线程有影响。
    (2)判断线程是否自动启动
    使用isAlive()来测试线程是否启动且仍在运行。
    是,返回true;否,返回false;
    (3)线程的强制运行
    采用join()方法,在线程强制运行期间,其他线程无法运行,必须等待此线程完成后才可以继续执行。
    (4)线程的休眠、中断
    使用Thread.sleep()方法,时间单位ms.
    (5)线程的优先级
    用setPriority设置。
    MAX_PRIORITY 最高优先级
    NORM_PRIORITY 中等优先级 (主方法的优先级)
    MIN_PRIORITY 最低优先级
    (6)线程的礼让
    运用yield方法将一个线程的操作暂时让给其他线程执行。
    (7)同步代码块

    synchronized(同步对象){
    需要同步的代码;
    }
    

    (8)操作文件的类File
    Windows目录的分隔符""
    Linux目录的分割符“/"
    输入要“";
    (9)列出指定目录的全部文件

    public String[] list(): 列出全部名称,返回一个字符串数组。
    public File[] listFiles():列出完整路径,返回一个File对象数组。
    

    判断一个给定路径是否为目录
    运用isDirectory()方法判断。

  • 相关阅读:
    windows定时任务schtasks命令详细解
    TCP/IP 详解7 Ping指令
    Vue JSX、自定义 v-model
    DOM 元素的循环遍历
    关于 Blob
    Vue.nextTick 的应用解析
    弹窗组件及其回调函数
    krry-transfer ⏤ 基于 element 的升级版穿梭框组件发布到 npm 啦
    防抖与节流 & 若每个请求必须发送,如何平滑地获取最后一个接口返回的数据
    Java 单文件、多文件上传 / 实现上传进度条
  • 原文地址:https://www.cnblogs.com/1211li/p/11729397.html
Copyright © 2011-2022 走看看