JAVA多线程售票问题

  难点:要保证在卖出每一张票后,在总票数上减1时,总票数是一个真实的值,也就是说总票数是多个线程中共享的数据,

     并且总票数是同步的。

public class BuyTicketTest {

    public static void main(String[] args) {
        final Ticket ticket = new Ticket();
        for (int i = 0; i < 101; i++) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    ticket.decrease();
                }
            }).start();
        }
    }
}

class Ticket {
    private int ticketPollCount = 100;    //总票数
    public synchronized void decrease() {
        if (ticketPollCount == 0) {
            System.out.println("没有足够的票!");
            return;
        }
        ticketPollCount--;
        System.out.println(ticketPollCount);
    }
}
原文地址:https://www.cnblogs.com/duwenlei/p/5104526.html