zoukankan      html  css  js  c++  java
  • 多线程售票

    package threadT;
    
    public class ThreadMain {
        public static void main(String args[]) {
            SellTicket str = new SellTicket(10);
            Thread tr1 = new Thread(str, "窗口1");
            Thread tr2 = new Thread(str, "窗口2");
            Thread tr3 = new Thread(str, "窗口3");
            tr1.start();
            tr2.start();
            tr3.start();
        }
    }
    package threadT;
    
    import java.util.concurrent.locks.Lock;
    import java.util.concurrent.locks.ReentrantLock;
    
    public class SellTicket implements Runnable {
    
        // 定义票的数量
        private int tickets = 0;
    
        public SellTicket(int count) {
            tickets = count;
        }
    
        // 定义锁对象
        private final Lock lock = new ReentrantLock();
    
        public void run() {
            // 卖完标记
            boolean over = false;
            while (true) {
                try {
                    if (tickets == 0) {
                        System.out.println(Thread.currentThread().getName() + "检测到已售完");
                        over = true;
                        break;
                    }
                    // 加锁
                    lock.lock();
                    if (tickets > 0) {
                        try {
                            Thread.sleep(100);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println(Thread.currentThread().getName() + "正在出售第" + (tickets--) + "张票");
                    }
                } finally {
                    if (!over)
                        // 释放锁
                        lock.unlock();
                }
            }
        }
    
    }

    有追求,才有动力!

    向每一个软件工程师致敬!

    by wujf

    mail:921252375@qq.com

  • 相关阅读:
    Qt生成随机数
    Qt调用系统DLL,判断网络连接状态
    Qt操作sqlite数据库
    Qt 操作注册表
    vs报错:RC1004 unexpected end of file found
    Qt操作ini文件
    Django Admin:自动选择当前用户
    BSTR转QString
    vue-cli4,vue3打包后页面无内容
    Qt 5.12.10 国际化
  • 原文地址:https://www.cnblogs.com/wujf/p/9090124.html
Copyright © 2011-2022 走看看