使用标准Java库进行作业调度

时间:2011-09-25 13:03:02

标签: java schedule

如标签中所述,这是家庭作业,仅使用标准的Java库。

任务是创建一个程序,安排在不同的烤箱中烹饪的订单(包括比萨饼)。订单有一个必须满足的要求,比萨饼有烹饪时间和冷却时间,本来所有的比萨必须在截止日期前煮熟,但不能这么早煮熟,以至于他们离开烤箱的时间超过了冷却时间。如果确定在截止期限之前无法完成订单,则抛出异常。我无法理解的主要问题是如何让程序重新安排烤箱以适应新的订单。

我想不出如何开始这个,并且非常感谢任何帮助!

3 个答案:

答案 0 :(得分:1)

您可以开始阅读earliest deadline first scheduling

您的披萨处理时间(烹饪+酷+等)似乎可以预先计算,因此PriorityQueue可能会有所帮助。 PizzaOrder将实现Comparable接口,该接口比较订单的截止日期。

答案 1 :(得分:1)

一个好的起点是将中间段转换为具有行为和状态的对象,例如

class Order 
List<Pizza> pizzas;

class Oven 
int maxPizzas;
List<Pizza> cooking;
cook(pizza: Pizza);

class Pizza 
int cookTimeMins; 
int coolTimeMins;
long cookTimeStart;

class PizzaShop 
List<Oven> ovens; 
List<Order> orders;
scheduleOrder(order: Order) throws Exception

从那里开始伪编码你想要在各种方法中发生的事情。从这些构建块开始,您会发现在不整体查看问题时,问题变得更容易解决,但是在小块中。

答案 2 :(得分:0)

很难知道您提供的信息,但如果您想尝试使用JBoss Rules (Drools)这样的规则引擎似乎是一个很好的方案。