使用同步鎖方法模擬搶票
阿新 • • 發佈:2020-07-08
1 /** 2 * 使用同步方法模擬12306搶票 3 */ 4 public class SynMethed12306 { 5 public static void main(String[] args) { 6 Web12306 one = new Web12306(); 7 new Thread(one, "張三").start(); 8 new Thread(one, "李四").start(); 9 new Thread(one, "王五").start(); 10 } 11 } 12 13class Web12306 implements Runnable{ 14 private int number = 50; //票數 15 private boolean flag = true; //識別符號 16 @Override 17 public void run() { 18 while(flag) { 19 try { 20 Thread.sleep(100); 21 } catch (InterruptedException e) { 22 e.printStackTrace();23 } 24 test(); 25 } 26 } 27 28 public synchronized void test() { //同步鎖關鍵字 29 if(number <= 0) { 30 flag = false; 31 return; 32 } 33 System.out.println(Thread.currentThread().getName() + "-->" + number--); 34 }35 36 }