• java 多线程同步锁的使用 三个售票窗口同时出售20张票


    package Thread;
    /**
    * 
    * 三个售票窗口同时出售20张票
    *程序分析:1.票数要使用同一个静态值
     *2.为保证不会出现卖出同一个票数,要java多线程同步锁。
    *设计思路:1.创建一个站台类Station,继承Thread,重写run方法,
    *在run方法里面执行售票操作!售票要使用同步锁:即有一个站台卖这张票时,其他站台要等这张票卖完!
    *3.创建主方法调用类
    */
    public class Station1 extends Thread{
    //通过构造方法给线程名字赋值
    public Station1(String name){
    super(name);//给线程名字赋值
    }
    //为了保持票数的一致,票数要静态
    static int tick = 20;
    //创建一个静态钥匙
    static Object ob = "aa";//值是任意的
    //重写run方法 实现买票操作
    public void run(){
    while(tick>0){
    synchronized(ob){
    /**
    * 这个很重要, 必须使用一个锁
    * 进去的人会把钥匙拿在手上 出来才把钥匙拿出来
    */
    if(tick>0){
    System.out.println(getName()+"卖了第"+tick+"张票");
    tick--;
    }else{
    System.out.println("票卖完了");
    }
    }
    try {
    sleep(1000);//休息一秒
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
    }
    
     
    
    package Thread;
    
    public class MainClass1 {
    /**
    * java 多线程同步锁的使用
    * 示例 三个售票窗口同时出售10张票
    */
    public static void main(String[] args) {
    //实例化站台对象 并为每一个站台取名字
    Station1 station1 = new Station1("窗口1");
    Station1 station2 = new Station1("窗口2");
    Station1 station3 = new Station1("窗口3");
    //让每一个站台对象各自开始工作
    station1.start();
    station2.start();
    station3.start();
    }
    }
  • 相关阅读:
    Android studio 安装已经下载好的gradle.zip文件【ubuntu 14.04 LTS环境】
    Python 2.7.6 安装lxml模块[ubuntu14.04 LTS]
    ubuntu14.04 LTS Python IDE专用编辑器PyCharm开发环境搭建
    Git 创建两个“本地分支”协同工作
    关于refs/for/ 和refs/heads/
    Git 多人协作开发的过程
    gerrit_bash_commands.sh
    Ubuntu Eclipse配置Python开发环境
    看看你那张熬完夜的脸
    2016-01-24
  • 原文地址:https://www.cnblogs.com/ls1783047205/p/9751027.html
Copyright © 2020-2023  润新知