案例:四個視窗共賣100張票(同步程式碼塊方式)
阿新 • • 發佈:2020-12-09
案例:四個視窗共賣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--; } } } }