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


    实验任务详情:

    完成火车站售票程序的模拟。
    要求:
    (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)直接作用于静态方法:相当于对当前类加锁,进入同步代码前要获得当前类的锁。

  • 相关阅读:
    day3:python测试题
    day4:Python列表(list)元组( tuple)字典(dict)
    day3:python运算符及数据类型(str)(int)
    2day:Python基础
    1day:了解python
    centos下安装storm
    Linux下添加,删除,修改,查看用户和用户组
    svn默认地址老发生改变,记下默认路径
    hive 遇到的问题及解决方法
    hadoop2.5.2 安装与部署
  • 原文地址:https://www.cnblogs.com/lyp82ndl/p/11739703.html
Copyright © 2020-2023  润新知