2016-09-18 37 views
0

假设我需要用离散时间从[0,1,2,3 ...,n]写一个模拟器。 我给出了一个在特定时间开始任务的工作人员列表,并且需要一段指定的时间来完成任务。 任务完成后,它会被放在其他工作人员将要选取的队列中(然后再放入队列中)。工作人员至少需要完成另外两项工作。 一旦任务由三名工人完成,就认为已完成,不再需要放入队列。编写Java代码以模拟离散时间和正在完成的任务的最佳方法是什么?

我不确定的唯一事情是如何模拟时间流逝和工作人员在某个特定时间做事。

回答

0

我会使用一个PriorityQueue按仿真时间排序,然后执行下一步。这样您每次都可以高效地找到下一个任务。你的任务对象可能包含一个已经启动了多少次的计数器。

0

您可以在实际时间内使用实际时间,即java.util.Date。 对于工作,可以表示一个整数。当工作人员工作时,整数将减少,当它达到0时,工作完成,然后您可以计算每个工作人员完成所需的时间和完成的工作。

相似例子:https://howtoprogramwithjava.com/java-multithreading/

相关问题