1

シナリオ:

北から南(逆)に向かう車の束は、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!");
        }
    }
4

1 に答える 1

1

最初の車がすでに橋の上で75ミリを費やしたときに、2番目の車が橋に到着した場合、2番目の車は25ミリしか待機しないのは当然のことのように思われます。

于 2012-06-03T15:06:50.487 に答える