方法与Thread.sleep()之间的时间计算

时间:2012-06-03 14:50:27

标签: java

场景:

从北到南的一群汽车(反之亦然)沿着双车道行驶。 过了一会儿,他们到了一座桥。这座桥只是单向的,而且容量有限。 一辆车要花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!");
        }
    }

1 个答案:

答案 0 :(得分:1)

如果第一辆车已经在桥上花了75毫升时第二辆车来到桥上,我认为第二辆车只等25毫升是合乎逻辑的。