シナリオ:
北から南(逆)に向かう車の束は、2車線の道路に沿って移動します。しばらくすると、彼らは橋に到着します。橋は片道のみで、容量に限りがあります。車は橋を通過するのに100msを費やします。交通事故は許されません。
すべての車について、計算する必要があることを考えると、
橋に入る車の要求から横断の開始までの時間。
たとえば、北に向かう車が橋に到着し、橋に南に向かう車があることを発見した場合、待機する必要があります。どのくらい待つ必要がありますか?もちろん、車が1台しかない場合(橋が空の場合)、車の待機時間は0です。2台の車(反対方向、橋の容量= 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!");
}
}