1. 程式人生 > >Java-多執行緒實現售票

Java-多執行緒實現售票

假設有一百張票由四個售票點同時在賣,請用多執行緒來程式設計此售票過程(請在程式設計中避免出現一張票號被列印多次以及出現0和負數票號的情況)。

程式碼如下:

package com.homework.lhh;

public class Ex02 {
    public static void main(String[] args) {
        Ticket ticket = new Ticket();
        GetTicket g1 = new GetTicket("售票點1", ticket);
        GetTicket g2 = new GetTicket("售票點2"
, ticket); GetTicket g3 = new GetTicket("售票點3", ticket); GetTicket g4 = new GetTicket("售票點4", ticket); g1.start(); g2.start(); g3.start(); g4.start(); } } class Ticket { private int ticketNum = 100; private int temp = 0; public int getTicketNum
() { return ticketNum; } public synchronized void getTicket() { if (ticketNum != 0) { ticketNum -= 1; temp++; try { Thread.sleep(100); System.out.println(Thread.currentThread().getName() + " 賣出了一張票,票號為 " + temp + ", 還剩 "
+ ticketNum + " 張票"); } catch (InterruptedException e) { e.printStackTrace(); } } } } class GetTicket extends Thread { private Ticket ticket; public GetTicket(String name, Ticket ticket) { super(name); this.ticket = ticket; } @Override public void run() { super.run(); while (ticket.getTicketNum() != 0) { ticket.getTicket(); } } }