加油站模拟:如何模拟随机间隔的汽车?

Lur*_*ron 2 java random simulation time multithreading

作业如下:

加油站由2个泵组成.每个泵都有一定量的燃料可以分配.汽车以随机间隔到达,并尝试使用两个泵中的一个:

- 如果泵可用且有燃料,则立即允许汽车使用它.每辆车都需要一定量的燃料(随机数),并且必须等待与该燃料量成比例的时间.例如,一辆汽车可能需要6加仑,将使用泵3秒,另一辆汽车可能需要10加仑,并将使用泵5秒等.当汽车加油时,它离开,另一辆车可以使用泵.在给汽车加油后,相应地调节泵中的燃料量.
- 如果当前正在使用两个泵,那么到达的汽车将等待,直到两个泵中的一个变为可用.
- 如果泵的燃料耗尽,它必须等待油轮提供更​​多燃料.油轮定期到达(但不是经常),并将两个泵填满容量.当油轮为泵提供服务时,没有汽车可以使用泵.忘了添加

第一部分:您必须提交符合上述规格的详细设计.您的设计必须使用Java线程.您必须指定将使用的线程数量和类型,以及这些线程的同步方式.您可以用伪代码编写项目的这个阶段.这是为了帮助您了解各个部分将如何组合在一起.

第二部分:您必须使用Java线程和适当的同步方法提交设计的完整实现.必须根据上述规范仔细测试您的实施.


我想知道.如何使用Java Thread来模拟随机进入的汽车?
我很失落,并提前感谢你的帮助.

duf*_*ymo 12

创建一个汽车工厂类,吐出一辆汽车,将其添加到一个出列并随机进入休眠状态.

像所有学生一样,你可能会发现这个问题有点压倒性.如果你没有开始将它分解成你可以处理的较小块.想一想整体设计并开始实现它的一小部分.

例如,这是一个排队理论问题.它们可能是汽车,银行行中的人或与队列交互的任何东西.不要担心汽车或加油站的细节.这是你的问题:

  1. 你有一条线在一端添加新条目并在另一端带走它们.它被称为出列数据结构.阅读它.看看您是否可以编写(或重用)Java Dequeue类.完全理解它.写一个小驱动程序添加到一端并从另一端删除.
  2. 一旦你有了这个,你需要编写创建新条目的类来添加到dequeue而另一个删除它们.简单地通过编写以固定间隔工作的加法器/移除器来开始.您应该看到的是,如果加法器和移除器具有完全相同的接口,则排队等待的条目数不会改变.如果加法器的工作速度比去除器快,则该线应填满.如果卸妆工作速度比加法器快,那么您将永远不会有备份.确保您的简单类表现出这种行为.
  3. 添加随机位并开始模拟.您将希望了解行中的条目数随时间的变化情况.
  4. 现在添加多行.您想了解如何添加更多行来改变动态.

  • 你不需要一个双端队列; 一个简单的队列就足够了.(你只是在一端添加而在另一端删除.) (2认同)