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

    实验报告

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

    代码

    
    public class Mythread implements Runnable {
    
    	private int ticket = 1000;
    	
    	public void run() {
    		
    		for(int i=0;ticket>0;)
    		{
    			synchronized(this){
    				if(ticket>0) {
    					try {
    						Thread.sleep(1000);
    					}catch(InterruptedException ie) {
    						//ie.printStackTrace();
    					}
    					System.out.println(Thread.currentThread().getName()+"卖出第"+ticket+"张票");
    					ticket--;
    				}
    			}
    		}
    	}
    
    }
    
    测试
    
    public class Test {
    
    	public static void main(String[] args) {
    		Mythread t1 = new Mythread();
    		
    		
    		new Thread(t1,"1窗口").start();
    		new Thread(t1,"2窗口").start();
    		new Thread(t1,"3窗口").start();
    		new Thread(t1,"4窗口").start();
    		new Thread(t1,"5窗口").start();
    		new Thread(t1,"6窗口").start();
    		new Thread(t1,"7窗口").start();
    		new Thread(t1,"8窗口").start();
    		new Thread(t1,"9窗口").start();
    		new Thread(t1,"10窗口").start();
    	}
    
    }
    

    遇到的问题

    1.输出的同一张票重复的情况;

    解决办法:run()方法中的输出中把票的计数改为用ticket计数。
    2.没有显示每个线程的名称;

    解决办法:在run()方法的输出中调用Thread.currentThread().getName(),在main()方法中启动线程时可以给线程命名。

    运行结果





    学习总结

    线程的一些主要方法;
    取得和设置线程的名称:取得名称用Thread.currentThread().getName(),手工设置线程名称是在启动线程时new Thread(对象名称,"线程名称").start();
    中断线程:在一个线程运行时,另一个线程可以直接通过interrupt()方法中断其运行状态;
    同步:在多个线程操作同一资源时,有可能出现资源的同步问题,使用“同步代码块”或“同步方法”来避免;
    同步代码块:

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

    同步方法:

    synchronized 方法返回值 方法名称(参数列表){
       //方法体
    }
    

    File类
    File类的构造方法:
    public File(String pathname); 实例化File类的时候,必须设置好路径
    File类的主要操作方法:
    File类的常量:pathSeparator表示; separator表示
    RandomAccessFile类的常用操作方法;

    注意:

    1.主方法实际上也是一个线程;
    2.在java运行时至少会启动两个线程:一个是main线程,另一个是垃圾收集线程;
    3.在调用yield()方法做线程礼让时,会将当前线程暂停一下,让其它线程进行,但是是否会礼让成功,由CPU决定。

  • 相关阅读:
    CentOS7.4 chrony时间同步服务器部署(替代NTPD)
    Zabbix Agent for Windows部署(五)
    Zabbix3.4.5部署安装(二)
    Zabbix概术及基础介绍(一)
    修改zabbix为中文,并解决乱码问题(三)
    ZABBIX 3.4 监控Nginx 状态(七)
    PXE+Kickstart 全自动安装部署CentOS7.4
    Zabbix Agent for Linux部署(四)
    不能在 DropDownList 中选择多个项 原因分析及解决方法
    IE浏览器下的CSS问题
  • 原文地址:https://www.cnblogs.com/LeeMayZ/p/11733695.html
Copyright © 2011-2022 走看看