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

    实验任务详情:

    完成火车站售票程序的模拟。

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

    实验代码:

    package number3;
    
    class MyThread implements Runnable{                  //实现Runnable接口
        private int ticket=1000;
        public void run() {                                           //覆写run()方法
            for(int i=0;i<100;i++) {
                synchronized(this) {                            //设置需要同步的操作
                    if(ticket>0) {                                   //判断是否有票
                        try {
                            Thread.sleep(1000);        //休眠的时间1秒
                        }
                        catch(InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println(Thread.currentThread().getName()+"售票,余票:"+--ticket);  //输出信息  
                    }
                }
            }
        }
    };
    public class Ticket{
        public static void main(String[] args) {
        	 MyThread mt=new MyThread();       //定义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();
        }
    }
    

    实验截图

    这里是只运行5次的截图,运算量太大,所以显示运行过程。

    学习总结:1.多线程可有thread类,还有runnable。每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程.线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文.多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定. 线程的运行中需要使用计算机的内存资源和CPU。

    2.数据的同步syntronized

    synchronized样式:
    synchronized(同步对象){
    需要同步的代码;
    }
    
  • 相关阅读:
    HTML5结构
    HTML5新增的非主体元素header元素、footer元素、hgroup元素、adress元素
    CF GYM 100703G Game of numbers
    CF GYM 100703I Endeavor for perfection
    CF GYM 100703K Word order
    CF GYM 100703L Many questions
    CF GYM 100703M It's complicate
    HDU 5313 Bipartite Graph
    CF 560e Gerald and Giant Chess
    POJ 2479 Maximum sum
  • 原文地址:https://www.cnblogs.com/ydlBLOG/p/11737698.html
Copyright © 2011-2022 走看看