场景:
从北到南的一群汽车(反之亦然)沿着双车道行驶。 过了一会儿,他们到了一座桥。这座桥只是单向的,而且容量有限。 一辆车要花100ms才能穿过这座桥。不允许交通碰撞。鉴于我需要为所有车辆计算,
汽车进入大桥的请求与之间的时间 穿越的开始。
例如:如果一辆汽车向北行驶到桥上,发现桥上有车向南,那么 必须等等待多久了? 当然,如果只有一辆车(桥是空的),那么车的等待时间是= 0。 如果是两辆车(方向相反,桥容量= 1),则时间应为:0和100ms。
根据我写的代码,一辆车的等待时间为零,但另一辆车的less than 100
错误。
有什么理由吗?
在我看来,这只是让时间间隔的问题:
bridge.getin(direction);
和
Thread.sleep(100);
提前致谢。
以下是我所指的代码的一部分:
public void run(){
Random rand = new Random(); //class for random numbers
int timeToSleep = 10 + rand.nextInt(11);
try {
Thread.sleep(timeToSleep); //simulate the arrival at the bridge (it's not part of the calculation)
executionTime = System.currentTimeMillis(); //starts recording time
// The bridge is a one way bridge (it should avoid traffic collision)
bridge.getin(direction); //method call (thread asks to enter the shared section)
executionTime = System.currentTimeMillis() - executionTime; // get time spent by a thread before crossing
Thread.sleep(100); //simula l'attraversamento del ponte
bridge.getout(direction); //leaves the bridge
} catch (InterruptedException e) {
System.out.println("Car "+id+": interrupted!");
}
}
答案 0 :(得分:1)
如果第一辆车已经在桥上花了75毫升时第二辆车来到桥上,我认为第二辆车只等25毫升是合乎逻辑的。