• 第九周课程总结及实验报告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()方法判断。

  • 相关阅读:
    一个字段串拆分成多行显示或者多行数据合并成一个字符串
    sql server 创建登录名,并赋予访问权限
    调用CMD 执行命令
    安装 mysql
    数组和List以指定的方式拼接成字符串类型
    专业术语
    服务器读取客户端文件
    Docker基本操作
    Docker在Centos上的安装
    SpringBoot一览
  • 原文地址:https://www.cnblogs.com/1211li/p/11729397.html
Copyright © 2020-2023  润新知