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

    实验任务详情:

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

     一.实验代码

    package shiyan;
    
     class MyThread implements Runnable {
            private int tickets=1000;
     
    @Override
    public void run() {
        // TODO Auto-generated method stub
        for(int i=0;i<100;i++) {
            synchronized(this) {
            
            
            
                // TODO Auto-generated method stub
                if(tickets>0) {
                    try {
                        Thread.sleep(1000);
                    }
                    catch(InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println("卖票:ticket"+tickets--);
                }
                
            }
        
        }
    }
     }
    package shiyan;
    
    public class Test6 {
    
        public static void main(String[] args) {
            MyThread mt=new MyThread();
        Thread t1=new Thread(mt,"窗口1");
        Thread t2=new Thread(mt,"窗口2");
        Thread t3=new Thread(mt,"窗口3");
        Thread t4=new Thread(mt,"窗口4");
        Thread t5=new Thread(mt,"窗口5");
        Thread t6=new Thread(mt,"窗口6");
        Thread t7=new Thread(mt,"窗口7");
        Thread t8=new Thread(mt,"窗口8");
        Thread t9=new Thread(mt,"窗口9");
        Thread t10=new Thread(mt,"窗口10");
    t1.start();
    t2.start();
    t3.start();
    t4.start();
    t5.start();
    t6.start();
    t7.start();
    t8.start();
    t9.start();
    t10.start();
        }
    
    }

    二、实验结果截图

     三、实验总结:

    1.使用同步方法解决以上问题

    (1) synchronized
    (2)

     2.为什么我周围的一些人说这是一个很简单的作业?我是照着书写的。。

    四、我的学习总结:

    1.线程的创建状态

     

    2.线程操作的主要方法

     

     

    3.主线程有可能比其他线程先执行完。

    4.线程的休眠:Thread.sleep()与线程调度器交互,在指定的时间内将当前线程作为等待状态放入,一旦等待时间结束后,线程状态变为可运行状态,并等待CPU进一步执行。所以当前线程的实际休眠时间依赖于线程调度器和一部门操作系统。

     5.当一个线程运行的时候,另外一个线程可以直接通过interrupt()方法,中断其运行状态。

    6.线程的礼让使用yield()方法将一个线程的操作暂时让给其他线程执行。

  • 相关阅读:
    上传文件到七牛云
    工具类
    SpringBoot 整合 JWT Token
    JWT
    SpringBoot使用RedisTemplate整合Redis
    poj1850 Code
    洛谷P1313 计算系数
    洛谷P1602 Sramoc问题
    —Libre#2009. 「SCOI2015」小凸玩密室
    2014-9-27 NOIP模拟赛
  • 原文地址:https://www.cnblogs.com/Markming/p/11725653.html
Copyright © 2011-2022 走看看