题目示例:当比赛1、比赛2或比赛3拿走20瓶水时,打印输出“比赛1、比赛2或比赛3拿走20瓶水,现场馆有水**瓶”。当后勤保障队送水时,打印输出“保障队送水成功,现有水1000瓶”。
实现Runnable类,类似于多线程卖票。
代码如下:
public class TheFour implements Runnable {
public static void main(String[] args) {
Thread thread1 = new Thread(new TheFour(), "比赛1");
Thread thread2 = new Thread(new TheFour(), "比赛2");
Thread thread3 = new Thread(new TheFour(), "比赛3");
thread1.start();
thread2.start();
thread3.start();
}
public static int water_number = 1000;
public static int i = 3;
@Override
public void run() {
synchronized (new Object()) {
while (i != 0) {
i--;
while (water_number >= 100) {
water_number -= 20;
System.out.println(Thread.currentThread().getName() + "拿走20瓶水" +
"现有" + water_number + "瓶水");
}
if (water_number < 100) {
water_number = 1000;
System.out.println("保障队送水成功,现有水1000瓶");
}
}
}
}
}
就个人认为在多线程中出现最下面两行输出语句是正常的