zoukankan      html  css  js  c++  java
  • 经典买票并发

    package com.spinlock.spinlock.juc;
    
    import java.util.concurrent.locks.Lock;
    import java.util.concurrent.locks.ReentrantLock;
    
    public class Demo3 {
        public static void main(String[] args) {
            TicketWindow tw = new TicketWindow();
            for (int i = 1; i < 4; i++) {
                Thread t = new Thread(tw, "TickWindow-" + i);
                t.start();
            }
        }
    
      static  class TicketWindow implements Runnable {
            private int tickets = 10;//车票总量
    
            @Override
            public void run() {
                while (true) {
    //                synchronized (this) {
    
    
                    ReentrantLock reentrantLock = new ReentrantLock();
                    reentrantLock.lock();
                    if (tickets > 0) {
                            System.out.println(Thread.currentThread().getName() + "准备出票,剩余票数:" + tickets + "张");
                            tickets--;
                            System.out.println(Thread.currentThread().getName() + "卖出一张,剩余票数:" + tickets + "张");
                            try {
                                //休眠100ms卖票完会报错ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2JDWP exit error AGENT_ERROR_NO_JNI_ENV(183):  [../../../src/share/back/util.c:820]
                                //Thread.sleep(100);
                                Thread.sleep(500);//出票成功后让当前售票窗口睡眠,以便让其他售票窗口卖票
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        } else {
                            System.out.println(Thread.currentThread().getName() + "余票不足,停止售票!");
                            break;
                        }
                    reentrantLock.unlock();
                    }
    //
            }
        }
    }

    加入

    synchronized 或ReentrantLock  可解决并发
  • 相关阅读:
    初见线段树
    用typedef声明类型
    BZOJ 3240([Noi2013]矩阵游戏-费马小定理【矩阵推论】-%*s-快速读入)
    linux命令--sysctl
    信号量学习 & 共享内存同步
    原子操作
    共享内存学习
    HOST绑定和VIP映射
    【转载】《Unix网络编程》思维导图
    外排序 & 败者树 & 多路归并-学习
  • 原文地址:https://www.cnblogs.com/leeego-123/p/14016899.html
Copyright © 2011-2022 走看看