zoukankan      html  css  js  c++  java
  • 第七次实验报告及总结

    实验任务详情:

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

    实验代码

    package Demo6;
    
    class MyThread implements Runnable{
    	private int ticket=1000;
    	public void run() {
    		for(int i=0;i<10000;i++) {
    			this.sale();
    		}
    	}    
    public synchronized void sale() {
    			if(ticket>0) {
    			  try {
    				  Thread.sleep(1000);
    			  }catch(Exception e) {
    				  e.printStackTrace();
    			  }
    			  System.out.println(Thread.currentThread().getName()+"运行,i="+ticket--);
    	    }
       }
    };
    public class Pluto {
    	public static void main(String[] args) {
    		MyThread my=new MyThread();
    		new Thread(my,"窗口A").start();
    		new Thread(my,"窗口B").start();
    		new Thread(my,"窗口C").start();
    		new Thread(my,"窗口D").start();
    		new Thread(my,"窗口E").start();
    		new Thread(my,"窗口F").start();
    		new Thread(my,"窗口G").start();
    		new Thread(my,"窗口H").start();
    		new Thread(my,"窗口I").start();
    		new Thread(my,"窗口J").start();
    	
        }
    }
    

    实验截图

    实验总结:

    本周的实验题目在书上有相关的代码,我的代码是按照书上的来写的,改了一些需要修改的地方。
    个人感觉如果要多线程进行售票,应该需要用到死锁,但是不会用。
    

    学习总结:

    在Java中,实现多线程代码有两种方式:一种是继承Thread类;另一种是实现Runnable接口。

    继承Thread类

    多线程的定义语法:

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

    如果想正确的启动线程,是不能直接调用run()方法的,而是应该调用从Thread类中继承而来的start()方法。

    在线程启动时虽然调用的start()方法,但实际上调用的是run()方法的主体。

    实现Runnable接口:

    在java中也可以通过实现Runnable接口的方式实现多线程。此接口定义如下:

    public interface Runnable{
        public void run();
    }
    

    通过Runnable接口实现多线程:

    class 类名称 implements Runnable{
         属性***;
         方法***;
         public void run(){
              线程主体;
         }
    }
    
  • 相关阅读:
    繁简转换OpenCC,autogb 和 autob5,iconv,python的jianfan包
    Linux常用的系统监控shell脚本
    linux系统CPU,内存,磁盘,网络流量监控脚本
    linux系统巡检脚本shell实例
    主流脚本语言的比较和选择
    老男孩python第六期
    如何从 0 开始学 ruby on rails (漫步版)
    C#数学运算表达式解释器
    算法导论 第9章 中位数和顺序统计学(线性时间选择算法)
    ruby语言仅仅是昙花一现
  • 原文地址:https://www.cnblogs.com/hltltp/p/11723098.html
Copyright © 2011-2022 走看看