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

    实验任务详情:

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

    实验代码:

    package demo;
    
    class MyThread implements Runnable{
        private int ticket = 1000;
        public void run() {
            for (int i=0;i<100;i++){
                synchronized (this){
                    if (ticket>0){
                        try {
                            Thread.sleep(1000);
                        }catch (InterruptedException e){
                            e.printStackTrace();
                        }
                        System.out.println(Thread.currentThread().getName()+"售票:ticket="+ticket--);
                    }
                }
            }
        }
    }
    public class test {
        public static void main(String[] args) {
            MyThread mt=new MyThread();            
            new Thread(mt,"窗口1").start();                
            new Thread(mt,"窗口2").start();
            new Thread(mt,"窗口3").start();
            new Thread(mt,"窗口4").start();
            new Thread(mt,"窗口5").start();
            new Thread(mt,"窗口6").start();
            new Thread(mt,"窗口7").start();
            new Thread(mt,"窗口8").start();
            new Thread(mt,"窗口9").start();
            new Thread(mt,"窗口10").start();
        }
    }

    结果截图:

    实验总结:

    这个题老师上课讲过,书上也有类似的代码,还算比较简单。就是有一个小瑕疵,总是连续一个窗口卖票,也不知道是cpu的问题还是什么。

    课程总结:

    1)多线程继承Tread类:

    class 类名称 extends Thread{
          属性***;
          方法***public void run(){
               线程主体;
          }
    }

    2)Rnunable接口实现多线程:

    class 类名称 implements Runnable{
         属性***;
         方法***public void run(){
              线程主体;
         }
    }

    3)synchronized

    (1)指定加锁对象:对给定对象加锁,进入同步代码前要获得给定对象的锁。

    (2)直接作用于实例方法:相当于对当前实例加锁,进入同步代码前要获得当前实例的锁。

    (3)直接作用于静态方法:相当于对当前类加锁,进入同步代码前要获得当前类的锁。

  • 相关阅读:
    [LeetCode] Contains Duplicate II
    [LeetCode] House Robber II
    [LeetCode] Permutations II
    [LeetCode] Permutations
    [LeetCode] Next Permutation
    谈谈套接字
    基于Linux系统的Nagios网络管理模块的实现
    Windows/Linux下磁盘使用的图形化工具简介
    利用日志使管理Linux更轻松
    实际感受美丽的Linux(多组视频)
  • 原文地址:https://www.cnblogs.com/lyp82ndl/p/11739703.html
Copyright © 2011-2022 走看看