Java线程模拟网络购票

假设有三个买票窗口,总共有20张票,这种情况下就应该用三个线程去模拟三个窗口的卖票过程,代码如下:

package com.Demo5;

public class Ticket implements Runnable{
    private int num=20;   //票数总数为20
    private  int i=1;   //抢到票的次数
    @Override
    public void run() {
        while (true){
            if(num>0){
                System.out.println(Thread.currentThread().getName()+"抢到第"+(i++)+"张票,剩余"+(--num));
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
package com.Demo5;

public class Test {
    public static void main(String[] args) {
        System.out.println("**************开始抢票**************");
        Ticket ticket=new Ticket();
        Thread th1=new Thread(ticket);
        th1.setName("窗口1");
        th1.start();
        Thread th2=new Thread(ticket);
        th2.setName("窗口2");
        th2.start();
        Thread th3=new Thread(ticket);
        th3.setName("窗口3");
        th3.start();
    }
}

运行结果:

**************开始抢票**************
窗口1抢到第1张票,剩余19
窗口2抢到第2张票,剩余18
窗口3抢到第3张票,剩余17
窗口1抢到第4张票,剩余16
窗口2抢到第5张票,剩余15
窗口3抢到第6张票,剩余14
窗口1抢到第7张票,剩余13
窗口2抢到第8张票,剩余12
窗口3抢到第9张票,剩余11
窗口1抢到第10张票,剩余10
窗口2抢到第11张票,剩余9
窗口3抢到第12张票,剩余8
窗口1抢到第13张票,剩余7
窗口2抢到第14张票,剩余6
窗口3抢到第15张票,剩余5
窗口1抢到第16张票,剩余4
窗口2抢到第17张票,剩余3
窗口3抢到第18张票,剩余2
窗口1抢到第19张票,剩余1
窗口2抢到第20张票,剩余0

阅读更多

没有更多推荐了,返回首页