问题描述:给你n个赛车,让他们都在起跑线上就绪后,同时出发。
解决方案:用一个for循环创建线程对象,同时调用wait()方法,让所有线程等待;直到最后一个线程也准备就绪后,调用notifyAll(),同时启动所有线程。
思路:思路是,来一辆赛车就加上一把锁,并修改对应的操作数,如果没有全 部就绪就等待,并释放锁,直到最后一辆赛车到场后唤醒所有的赛车线程。
代码:
/**
* n辆赛车,让他们都在起跑线上就绪后,同时出发
*/
public class CarCompetion {
// 参赛赛车的数量
protected final int totalCarNum = 10;
// 当前在起跑线的赛车数量
protected int nowCarNum = 0;
}
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Car implements Runnable{
private int carNum;
private CarCompetion carCompetion = null;
public Car(int carNum, CarCompetion carCompetion) {
this.carNum = carNum;
this.carCompetion = carC