• 第九周


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

    package seven;
    
    public class paper {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		MyThread mt=new MyThread();
            Thread t1=new Thread(mt,"A窗口");
            Thread t2=new Thread(mt,"B窗口");
            Thread t3=new Thread(mt,"C窗口");
            Thread t4=new Thread(mt,"D窗口");
            Thread t5=new Thread(mt,"E窗口");
            Thread t6=new Thread(mt,"F窗口");
            Thread t7=new Thread(mt,"H窗口");
            Thread t8=new Thread(mt,"I窗口");
            Thread t9=new Thread(mt,"J窗口");
            Thread t0=new Thread(mt,"K窗口");
            t1.start();
            t2.start();
            t3.start();
            t4.start();
            t5.start();
            t6.start();
            t7.start();
            t8.start();
            t9.start();
            t0.start();
        }
    }
    

    package seven;
    
    public class MyThread  implements Runnable{
    	private int ticket=100;
        public void run() {
            for(int i=0;i<25;i++) {
                synchronized(this) {
                    if(ticket>0) {
                        try {
                            Thread.sleep(1000);
                        }catch(Exception e) {
                            e.printStackTrace();
                        }
                        System.out.println(Thread.currentThread().getName()+"运行,ticket="+ticket--);
                    }
                }
            }
        }
    
    }
    

    二、实验结果

    三、总结
    1、线程操作的一些主要方法
    public Thread(Runnable target) :接收Runnable 接口子类对象,实例化Thread对象。
    public Thread(Runnable target, Stirng name) :接收Runnable 接口子类对象,实例化Thread对象,并设置线程名称。
    public Thread (String name):实例化Thread对象,并且设置线程名称
    public static Thread currentThread():返回目前正在执行的线程
    *public void start():开始执行线程

    2、数据的同步syntronized
    同步代码块:
    synchronized(同步对象){
    需要同步的代码;
    }

    同步方法:
    synchronized 方法返回值 方法名称 (参数列表){
    //方法体
    }

  • 相关阅读:
    MySQL日志
    MySQL索引和事务
    【收集】腾讯AlloyTeam
    js基础知识点(只有点)
    【扩展】Canvas绘制列表的尝试
    开播 开博 凯博
    【总结】移动web问题小结
    〖前端开发〗HTML/CSS基础知识学习笔记
    第四次读书笔记——《代码大全》(续)
    C++笔记(1)
  • 原文地址:https://www.cnblogs.com/gaotian250yj912/p/11735823.html
Copyright © 2020-2023  润新知