zoukankan      html  css  js  c++  java
  • 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();
    }
    }
  • 相关阅读:
    15个新鲜出炉的 Photoshop 文本效果教程
    10个美丽的例子,插图在网页设计中的应用
    分享8个非常时髦的翻页特效(附代码片段)
    【Vue课堂】Vue.js 父子组件之间通信的十种方式
    Tippy.js – 轻量的 Javascript Tooltip 工具库
    12个美丽的网站与受到日出启发的配色方案
    精选:3个可以下载免费的高质量照片的网站
    nativefier
    Mark Text
    Puppeteer
  • 原文地址:https://www.cnblogs.com/ls1783047205/p/9751027.html
Copyright © 2011-2022 走看看