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(){
              线程主体;
         }
    }
    
  • 相关阅读:
    [转载] python 计算字符串长度
    收藏好文章
    centos7安装部署kafka_2.13-2.4.1集群
    (转)zookeeper-3.5.5安装报错:找不到或无法加载主类 org.apache.zookeeper.server.quorum.QuorumPeerMain
    (转)Marathon私有镜像仓库用户名和密码方式
    centos7安装最新版git
    最新版Harbor搭建(harbor-offline-installer-v1.10.1.tgz)(转)
    安装不可描述服务端socket.error: [Errno 99] Cannot assign requested address错误:
    Integer值判断是否相等问题
    LVS实现Kubernetes集群高可用
  • 原文地址:https://www.cnblogs.com/hltltp/p/11723098.html
Copyright © 2011-2022 走看看