• 2019JAVA第七次实验报告


    Java实验报告

    班级 计科二班 学号 20188442 姓名 吴怡君
    完成时间 2019.10.25
    评分等级

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

    实验代码

    package Domon6;
    	 
    	public class  ticket implements Runnable { 
    	    private int  tickets=1000; 
    	  
    	    public void run() { 
    	      
    	        while(true) {  
    	        if(this.Tickettest()!=1) { 
    	            System.out.println(Thread.currentThread().getName()+"票已卖完"); 
    	            return; 
    	        } 
    	        try { 
    	            Thread.yield(); //这里需要礼让给其它线程,防止一个线程独占
    	            Thread.sleep(1000); //等待一秒钟
    	        }catch (InterruptedException e) { 
    	        	
    	            e.printStackTrace(); 
    	         } 
    	        }
    	        
    	    } 
    	    
    	    public synchronized int Tickettest() {  //同步所有窗口,以防出现一票多买与负数
    	        if(this. tickets>=1) { 
    	            this. tickets--; 
    	            System.out.println(Thread.currentThread().getName()+"购票成功!"+"剩余票数"+this. tickets); 
    	            return 1; 
    	        } 
    	        return 0; 
    	    } 
    	}
    
    package Domon6;
    
    public class test { 
    	 
    	    public static void main(String[] args) { 
    	       
    	        ticket t=new ticket(); 
    	        for(int i=0;i<10;i++) { //由于程序运行时,是从Thread-0开始,所以可以用for循环实现
    	            new Thread(t).start();
    	        } 
    	    } 
    	 
    	}
    

    实验结果截图


    小题总结

    这是一道简单的模拟买票的一道题目,主要是运用多线程来实现,多线程可以有两种方法,直接继承Thread父类,另一种就是我写的这种Runnable,这个相比前一个就有一个很好的优点,后者可以同步,但是前者不可以,其他的都是书上的简单方法,总体来说,要理解这些关系就很简单,感觉还行。

    课程总结

    这周主要学习的知识点是关于线程和他的一些相关方法,首先线程分为四五个状态。1:创建状态、2:就绪状态、3:运行状态、4:堵塞状态、5:死亡状态,然后CPU根据线程的优先级进行调配。然后就是了解了一些简单的的方法,线程启动,线程的强制运行,线程的休眠,线程的优先级,线程的礼让等等。其中通过setPriority()方法可以设置一个线程的优先级。当然后面还有些老师谈到的一些知识,线程的生命周期,其实大多方法在JAVA中都已经定义好了,所以对于这些知识要有个大致的了解。继续努力。

  • 相关阅读:
    Python下opencv库的安装过程与一些问题汇总
    Pandas数据结构(二)——Pandas DataFrame
    Pandas数据结构(一)——Pandas Series
    Python:日期和时间的处理模块及相关函数
    Python常用的正则表达式处理函数
    Python的标准库介绍与常用的第三方库
    Python实现单链表数据的添加、删除、插入操作
    Python:爬取网站图片并保存至本地
    100_1小记ressons analysis
    [转载]计算机领域经典书籍推荐(2013.08.07更新)
  • 原文地址:https://www.cnblogs.com/521-PENG/p/11740735.html
Copyright © 2020-2023  润新知