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
13 class 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 }