票数类:
public class Votes {
public static Integer num = 100;
}
线程类:
public class Computer implements Runnable {
private Object lock = new Object();
@Override
public void run() {
while (Votes.num > 0) {
synchronized (lock) {
if (Votes.num > 0) {
System.out.println(Thread.currentThread().getName() + "卖出第: " + Votes.num + "张票。");
Votes.num--;
}
}
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
测试类:
public class Test {
public static void main(String[] args) {
Computer computer = new Computer();
for (int i = 1; i < 5; i++) {
new Thread(computer, "售票口" + i).start();
}
}
}
结果:
售票口1卖出第: 100张票。
售票口4卖出第: 99张票。
售票口3卖出第: 98张票。
售票口2卖出第: 97张票。
售票口2卖出第: 96张票。
售票口4卖出第: 95张票。
售票口3卖出第: 94张票。
售票口1卖出第: 93张票。
售票口3卖出第: 92张票。
售票口2卖出第: 91张票。
售票口1卖出第: 90张票。
售票口4卖出第: 89张票。
售票口3卖出第: 88张票。
售票口1卖出第: 87张票。
售票口4卖出第: 86张票。
售票口2卖出第: 85张票。
售票口3卖出第: 84张票。
售票口1卖出第: 83张票。
售票口4卖出第: 82张票。
售票口2卖出第: 81张票。
售票口3卖出第: 80张票。
售票口1卖出第: 79张票。
售票口4卖出第: 78张票。
售票口2卖出第: 77张票。
售票口3卖出第: 76张票。
售票口4卖出第: 75张票。
售票口2卖出第: 74张票。
售票口1卖出第: 73张票。
售票口2卖出第: 72张票。
售票口4卖出第: 71张票。
售票口3卖出第: 70张票。
售票口1卖出第: 69张票。
售票口3卖出第: 68张票。
售票口1卖出第: 67张票。
售票口2卖出第: 66张票。
售票口4卖出第: 65张票。
售票口2卖出第: 64张票。
售票口3卖出第: 63张票。
售票口1卖出第: 62张票。
售票口4卖出第: 61张票。
售票口1卖出第: 60张票。
售票口4卖出第: 59张票。
售票口2卖出第: 58张票。
售票口3卖出第: 57张票。
售票口1卖出第: 56张票。
售票口4卖出第: 55张票。
售票口3卖出第: 54张票。
售票口2卖出第: 53张票。
售票口3卖出第: 52张票。
售票口2卖出第: 51张票。
售票口4卖出第: 50张票。
售票口1卖出第: 49张票。
售票口2卖出第: 48张票。
售票口1卖出第: 47张票。
售票口4卖出第: 46张票。
售票口3卖出第: 45张票。
售票口4卖出第: 44张票。
售票口1卖出第: 43张票。
售票口3卖出第: 42张票。
售票口2卖出第: 41张票。
售票口2卖出第: 40张票。
售票口1卖出第: 39张票。
售票口3卖出第: 38张票。
售票口4卖出第: 37张票。
售票口3卖出第: 36张票。
售票口2卖出第: 35张票。
售票口1卖出第: 34张票。
售票口4卖出第: 33张票。
售票口2卖出第: 32张票。
售票口3卖出第: 31张票。
售票口4卖出第: 30张票。
售票口1卖出第: 29张票。
售票口2卖出第: 28张票。
售票口3卖出第: 27张票。
售票口4卖出第: 26张票。
售票口1卖出第: 25张票。
售票口4卖出第: 24张票。
售票口2卖出第: 23张票。
售票口3卖出第: 22张票。
售票口1卖出第: 21张票。
售票口1卖出第: 20张票。
售票口4卖出第: 19张票。
售票口2卖出第: 18张票。
售票口3卖出第: 17张票。
售票口2卖出第: 16张票。
售票口4卖出第: 15张票。
售票口3卖出第: 14张票。
售票口1卖出第: 13张票。
售票口2卖出第: 12张票。
售票口1卖出第: 11张票。
售票口3卖出第: 10张票。
售票口4卖出第: 9张票。
售票口3卖出第: 8张票。
售票口4卖出第: 7张票。
售票口2卖出第: 6张票。
售票口1卖出第: 5张票。
售票口3卖出第: 4张票。
售票口2卖出第: 3张票。
售票口1卖出第: 2张票。
售票口4卖出第: 1张票。