当前位置: 首页 > 知识库问答 >
问题:

方法和线程之间的时间计算。睡眠()

姬存
2023-03-14

脚本:

一群汽车从北向南(viceversa)沿着一条双车道道路行驶。过了一会儿,他们到达了一座桥。这座桥是单向的,通行能力有限。一辆汽车花100毫秒通过这座桥。不允许发生交通碰撞。

假设我需要计算,对于所有的车,

从车辆请求进入桥梁到开始穿越之间的时间。

例如:如果一辆向北行驶的汽车到达桥上,发现桥上有汽车向南行驶,它必须等待。它需要等多久?当然,如果只有一辆车(桥是空的),汽车的等待时间=0。如果两辆车(方向相反,桥容量=1),时间应该是:0和100ms。

根据我写的代码,一辆车的等待时间为零,但另一辆车的等待时间小于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个答案

皇甫乐
2023-03-14

如果第二辆车在第一辆车已经在桥上花费了75毫秒的时候来到桥上,那么在我看来,第二辆车只等了25毫秒是合乎逻辑的。

 类似资料:
  • 我正在调用while循环内的线程Hibernate1秒。当标志为true时,循环将运行(标志为true无限时间)。在循环内,线程应Hibernate1秒,唤醒并增加计数器,检查IF条件,如果为FALSE,则应再次Hibernate1秒并继续29次。在第30次迭代中,IF条件为true,IF语句中调用的方法将收集并存储数据。最后,在第32次迭代中,第二个IF语句将把存储的数据发送到服务器,并将计数设

  • 问题内容: 我正在编写需要定时精确的代码。我用机器人进行一些操作,然后我用了行动之间要经过的。但是我没有得到最好的结果,因为当我搜索它时,它是不准确的。做到这一点的最佳方法是什么?我的意思是用其他方法模拟。 问题答案: 除非您使用专门为此设计的语言/框架,否则现代OS中的时序永远都不是精确的。但是,您可以在大多数操作系统中以合理的不确定性进行工作。但是“合理”取决于您要解决的问题。 在Java中,

  • 问题内容: 我有一条流经多个系统的消息,每个系统都会记录消息的进入和退出以及时间戳和uuid messageId。我通过以下方式提取所有日志: 结果,我现在有以下事件: 我想生成一个报告(最好是堆积的条或列),用于每个系统的时间: 做这个的最好方式是什么?Logstash过滤器?kibana计算字段? 问题答案: 您只能使用Logstash 过滤器来实现此目的,但是,您必须实质性地重新实现该过滤器

  • 问题内容: 我需要计算两个日期之间经过的时间。 这里要注意的是,我需要像YouTube一样用视频评论时间戳来显示它。也就是说,仅以最大的方式显示它。 例如, 如果时间是50秒前,应该说是50秒前。 如果时间超过一分钟,则应说一分钟前/十分钟前,等等。 如果时差是1小时30分钟,则应显示:一个小时前。 如果时间是一个半星期而不是一个星期前应该说的话。 如果时间超过一个月,则应说一个月前/两个月前,等

  • 问题内容: 我有一个带有StartDate列的表,我想计算两个连续记录之间的时间差。 谢谢。 @ Mark Byers和@ Yahia,我将请求表作为requestId,startdate 我想知道requestid 1和2、2和3、3和4等之间的时差是多少。我知道我需要在表上进行自我连接,但是我在子句上没有得到正确的支持。 问题答案: 要实现您的要求,请尝试以下操作(从OP编辑后进行更新): 如

  • 本文向大家介绍python计算时间差的方法,包括了python计算时间差的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python计算时间差的方法。分享给大家供大家参考。具体分析如下: 1、问题: 给定你两个日期,如何计算这两个日期之间间隔几天,几个星期,几个月,几年? 2、解决方法: 标准模块datetime和第三方包dateutil(特别是dateutil的rrule.coun