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

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

    源代码#

    public class MyThread implements Runnable {
          private static int tickets=1000;
          
          public void run() {
        	  for(int i=0;i<10000;i++) {
        		  this.sale();
        	  }
          }
    	
    	public synchronized void sale() {
    		if(tickets>0) {
    			System.out.println(Thread.currentThread().getName()+"  "+"正在售出第"+tickets--+"张票");
    			System.out.println("售票成功!当前余票"+tickets+"张");
    		}
    			try {
    				Thread.sleep(1000);
    			}catch(InterruptedException e) {
    				e.printStackTrace();
    			}
    			
    		}
    	}
    
    public class Test {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
           MyThread my=new MyThread();
           new Thread(my,"窗口一").start();
           new Thread(my,"窗口二").start();
           new Thread(my,"窗口三").start();
           new Thread(my,"窗口四").start();
           new Thread(my,"窗口五").start();
           new Thread(my,"窗口六").start();
           new Thread(my,"窗口七").start();
           new Thread(my,"窗口八").start();
           new Thread(my,"窗口九").start();
           new Thread(my,"窗口十").start();
    	}
    
    }
    
    
    

    实验结果#

    总结#

    编程总结
    本周作业在老师讲解之后变得比较简单 加上书上也有类似的题目 主要要了解最近两节课上讲的一些知识点 具体知识点在学习总结里面

    学习总结
    1.

    如果要想正确的启动线程,是不能直接调用run()方法的,应该调用从Thread类中继承而来的start()方法,才可以启动线程。
    mt1.start();			// 启动多线程
    mt2.start();			// 启动多线程
    

    3.线程操作的相关方法

    4.synchronized的用法

    •指定加锁对象:对给定对象加锁,进入同步代码前要获得给定对象的锁。 
    •直接作用于实例方法:相当于对当前实例加锁,进入同步代码前要获得当前实例的锁。
    •直接作用于静态方法:相当于对当前类加锁,进入同步代码前要获得当前类的锁。
    
    5.
    在Java中,使用1到10表示线程优先级。一般可以使用Thread内置的三个静态标量表示:
    public final static int MIN_PRIORITY = 1;
    public final static int NORM_PRIORITY = 5;
    public final static int MAX_PRIORITY = 10;
    数字越大则优先级越高,但有效范围在1到10之间。下面的代码展示了优先级的作用。高优先级的线程倾向于更快地完成。
    

    6.Thread类和Runnable接口的区别

    实际上Thread类和Runnable接口之间在使用上也是有所区别的,如果一个类继承Thread类,则不适合于多个线程共享资源,而实现了Runnable接口,则可以方便的实现资源的共享。
    
  • 相关阅读:
    UVA1349 Optimal Bus Route Design 最优巴士路线设计
    POJ3565 Ants 蚂蚁(NEERC 2008)
    UVA1663 Purifying Machine 净化器
    UVa11996 Jewel Magic 魔法珠宝
    NEERC2003 Jurassic Remains 侏罗纪
    UVA11895 Honorary Tickets
    gdb调试coredump(使用篇)
    使用 MegaCLI 检测磁盘状态并更换磁盘
    员工直接坦诚直来直去 真性情
    山东浪潮超越3B4000申泰RM5120-L
  • 原文地址:https://www.cnblogs.com/lxzlyf2022/p/11722118.html
Copyright © 2011-2022 走看看