1. 程式人生 > 實用技巧 >案例:四個視窗共賣100張票(同步程式碼塊方式)

案例:四個視窗共賣100張票(同步程式碼塊方式)

案例:四個視窗共賣100張票(同步程式碼塊方式)

程式碼實現

package com.sun.base.XianCheng;
/**
 * 用同步程式碼塊synchronized
 * 實現四個視窗共賣100張票
 * @author SFF
 */
public class TextTicket {
    public static void main(String[] args) {
        //建立Ticket
        Ticket ticket = new Ticket();
        //建立執行緒物件
        Thread w1=new Thread(ticket,"視窗1");
        Thread w2=new Thread(ticket,"視窗2");
        Thread w3=new Thread(ticket,"視窗3");
        Thread w4=new Thread(ticket,"視窗4");
        //啟動執行緒
        w1.start();
        w2.start();
        w3.start();
        w4.start();
    }
}

/**
 * 票類
 */
class Ticket implements Runnable{
    private int ticket=100;
    private Object obj =new Object();
    @Override
    public void run() {
        while (true) {
            synchronized (obj) {
                if (ticket < 0) {
                    break;
                }
                System.out.println(Thread.currentThread().getName() + "賣了第" + (100 - ticket) + "張票");
                ticket--;
            }
        }
    }
}