多執行緒售票問題
阿新 • • 發佈:2018-12-06
多執行緒售票問題
package com.carlinfo.bigdata; /** * 多執行緒售票問題 */ public class Ops4 { public static void main(String[] args) { /** * new一個內部類ticketTask實現Runnable,放進執行緒 */ TicketTask ticketTask = new TicketTask(); Thread t1 = new Thread(ticketTask, "t1"); Thread t2 = new Thread(ticketTask, "t2"); t1.start(); t2.start(); } } class TicketTask implements Runnable { /** * 總票數 */ int totalTicket = 10000; @Override public void run() { while (totalTicket > 0) { /** * 在迴圈裡面加一把鎖 */ synchronized (this) { if (totalTicket > 0) { System.out.println(Thread.currentThread().getName() + "-->正在售出第" + (totalTicket--)); } } } } }