实现方式一
1.保证共享数据同一时刻只能有一个线程操作,即在同一时刻只有一个线程在操作.
2.为了防止跑步人数超过预期值,保证代码的强壮性,可以在同步代码块中加入条件判断
public class Demo1 implements Runnable {
private static int meters = 1000; //共跑1000米
@Override
public void run() {
while (true) {
synchronized ("lock"){
//meters修饰的类型为static,当不是同一个对象的时候,每次meters都为初始值
System.out.println(Thread.currentThread().getName()+"准备参赛"+"还剩"+meters+"米");
if (meters <= 200) {
System.out.println("比赛已结束");
break;
<