• 第九周课程总结&实验报告(七)


    实验任务详情:
    完成火车站售票程序的模拟。
    要求:
    (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接口,则可以方便的实现资源的共享。
    
  • 相关阅读:
    第四章
    第三章
    第二章
    实验5-2: 编制程序,输入m、n(m≥n≥0)后,计算下列表达式的值并输出。 要求将计算阶乘的运算编写作函数fact(n),函数返回值的类型为float
    作业
    多人电费
    单人电费
    圆柱体积
    圆面积
    第七章
  • 原文地址:https://www.cnblogs.com/lxzlyf2022/p/11722118.html
Copyright © 2020-2023  润新知