private int trainCount = 100; // private Object lock = new Object(); public boolean flag;
@Override public void run() { while (trainCount > 0) { try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); }
if (flag) { sell1(); } else { sell2(); }
}
}
public void sell1() { synchronized (this) { if (trainCount > 0) { System.out.println(Thread.currentThread().getName() + " Sell a ticket:" + (100 - trainCount + 1)); trainCount--; } } }
public synchronized void sell2() { if (trainCount > 0) { System.out.println(Thread.currentThread().getName() + " Sell a ticket:" + (100 - trainCount + 1)); trainCount--; } }
public static void main(String[] args) { ThreadTest threadTest = new ThreadTest(); Thread thread = new Thread(threadTest, "窗口①"); Thread thread2 = new Thread(threadTest, "窗口②"); thread.start(); threadTest.flag = true; thread2.start();
} }
//运行结果 // 窗口② Sell a ticket:1 // 窗口① Sell a ticket:2 // 窗口① Sell a ticket:3 // 窗口② Sell a ticket:4 // 窗口② Sell a ticket:5 // 窗口① Sell a ticket:6 // 窗口① Sell a ticket:7 // 窗口② Sell a ticket:8 // 窗口① Sell a ticket:9 // 窗口② Sell a ticket:10 // 窗口① Sell a ticket:11 // 窗口② Sell a ticket:12 // 窗口① Sell a ticket:13 // 窗口② Sell a ticket:14 // 窗口② Sell a ticket:15 // 窗口① Sell a ticket:16 // 窗口② Sell a ticket:17 // 窗口① Sell a ticket:18 // 窗口② Sell a ticket:19 // 窗口① Sell a ticket:20 // 窗口① Sell a ticket:21 // 窗口② Sell a ticket:22 // 窗口① Sell a ticket:23 // 窗口② Sell a ticket:24 // 窗口① Sell a ticket:25 // 窗口② Sell a ticket:26 // 窗口① Sell a ticket:27 // 窗口② Sell a ticket:28 // 窗口② Sell a ticket:29 // 窗口① Sell a ticket:30 // 窗口① Sell a ticket:31 // 窗口② Sell a ticket:32 // 窗口② Sell a ticket:33 // 窗口① Sell a ticket:34 // 窗口② Sell a ticket:35 // 窗口① Sell a ticket:36 // 窗口① Sell a ticket:37 // 窗口② Sell a ticket:38 // 窗口① Sell a ticket:39 // 窗口② Sell a ticket:40 // 窗口② Sell a ticket:41 // 窗口① Sell a ticket:42 // 窗口① Sell a ticket:43 // 窗口② Sell a ticket:44 // 窗口① Sell a ticket:45 // 窗口② Sell a ticket:46 // 窗口② Sell a ticket:47 // 窗口① Sell a ticket:48 // 窗口① Sell a ticket:49 // 窗口② Sell a ticket:50 // 窗口② Sell a ticket:51 // 窗口① Sell a ticket:52 // 窗口① Sell a ticket:53 // 窗口② Sell a ticket:54 // 窗口① Sell a ticket:55 // 窗口② Sell a ticket:56 // 窗口② Sell a ticket:57 // 窗口① Sell a ticket:58 // 窗口① Sell a ticket:59 // 窗口② Sell a ticket:60 // 窗口② Sell a ticket:61 // 窗口① Sell a ticket:62 // 窗口① Sell a ticket:63 // 窗口② Sell a ticket:64 // 窗口① Sell a ticket:65 // 窗口② Sell a ticket:66 // 窗口② Sell a ticket:67 // 窗口① Sell a ticket:68 // 窗口① Sell a ticket:69 // 窗口② Sell a ticket:70 // 窗口② Sell a ticket:71 // 窗口① Sell a ticket:72 // 窗口① Sell a ticket:73 // 窗口② Sell a ticket:74 // 窗口② Sell a ticket:75 // 窗口① Sell a ticket:76 // 窗口② Sell a ticket:77 // 窗口① Sell a ticket:78 // 窗口① Sell a ticket:79 // 窗口② Sell a ticket:80 // 窗口① Sell a ticket:81 // 窗口② Sell a ticket:82 // 窗口② Sell a ticket:83 // 窗口① Sell a ticket:84 // 窗口② Sell a ticket:85 // 窗口① Sell a ticket:86 // 窗口② Sell a ticket:87 // 窗口① Sell a ticket:88 // 窗口② Sell a ticket:89 // 窗口① Sell a ticket:90 // 窗口① Sell a ticket:91 // 窗口② Sell a ticket:92 // 窗口② Sell a ticket:93 // 窗口① Sell a ticket:94 // 窗口① Sell a ticket:95 // 窗口② Sell a ticket:96 // 窗口② Sell a ticket:97 // 窗口① Sell a ticket:98 // 窗口② Sell a ticket:99 // 窗口① Sell a ticket:100 // // Process finished with exit code 0