java多线程模拟窗口售票过程

package com.ctgu.testThread;

public class BuyTicketsThread implements Runnable{

private int totalTickets = 20;

public void saleTickets(){
    synchronized (this) {
        if(totalTickets > 0){
            String curName = Thread.currentThread().getName();
            System.out.println(curName + " 卖出第 " + totalTickets + " 张票");
            totalTickets--;
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

public synchronized void saleTickets2(){
    if(totalTickets > 0){
        String curName = Thread.currentThread().getName();
        System.out.println(curName + " 卖出第 " + totalTickets + " 张票");
        totalTickets--;
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

@Override
public void run() {
    while(totalTickets > 0){
        saleTickets();
    }
    
}

public static void main(String[] args) {
    BuyTicketsThread bt = new BuyTicketsThread();
    Thread t1 = new Thread(bt, "窗口1");
    Thread t2 = new Thread(bt, "窗口2");
    Thread t3 = new Thread(bt, "窗口3");
    Thread t4 = new Thread(bt, "窗口4");
    t1.start();
    t2.start();
    t3.start();
    t4.start();
}

}
运行结果:
窗口1 卖出第 20 张票
窗口1 卖出第 19 张票
窗口1 卖出第 18 张票
窗口1 卖出第 17 张票
窗口1 卖出第 16 张票
窗口2 卖出第 15 张票
窗口4 卖出第 14 张票
窗口4 卖出第 13 张票
窗口3 卖出第 12 张票
窗口3 卖出第 11 张票
窗口3 卖出第 10 张票
窗口3 卖出第 9 张票
窗口3 卖出第 8 张票
窗口3 卖出第 7 张票
窗口3 卖出第 6 张票
窗口3 卖出第 5 张票
窗口3 卖出第 4 张票
窗口4 卖出第 3 张票
窗口4 卖出第 2 张票
窗口4 卖出第 1 张票

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,068评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,006评论 18 399
  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 7,206评论 1 15
  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 8,098评论 1 18
  • 让我们先来回忆一下,日常的我们是否有好久没穿的衣服,可能是料子还行、款式还行,但是自己已经穿不上了,一直觉得有可能...
    屁桃爸阅读 1,877评论 0 0

友情链接更多精彩内容