美文网首页
java多线程模拟窗口售票过程

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

作者: wangzaiplus | 来源:发表于2017-06-30 19:10 被阅读0次

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 张票

相关文章

网友评论

      本文标题:java多线程模拟窗口售票过程

      本文链接:https://www.haomeiwen.com/subject/hhwdcxtx.html