2013-03-11 97 views
-3

我从数据源(文件或dbms)中选取计划。该时间表告诉我何时打开设备以及何时关闭设备。例如上午11点,下午12点30分,下午2点,下午3点等。这个计划每天重复一次。每个设备都有自己的时间表。在Java中调度需要帮助?

我想根据每天的日程安排所有这些设备。我怎样才能在Java中做到这一点?

public class Device{ 
    boolean state;//true is on. 
    String schedule = "11am ON, 12:30pm OFF, 2PM ON, 3PM OFF...etc"; 

} 

回答

2

看看java.util.TimerTaskjava.util.Timer类。

您可以使用Timer.schedule方法来安排任务在特定时间运行。同样来自官方文档:

计划指定的任务在指定的时间执行。如果 时间过去,则该任务被安排立即执行 。

schedule还有其他变种,您可以使用它们来安排任何重复执行的任务。

+0

不幸的是,Timer.schedule(参数)使用了Java的弃用Date类。我不认为我应该使用已弃用的类:( – Time 2013-03-11 07:25:45

+0

@Time“Date”未被弃用。什么是您的信息的来源? – 2013-03-11 07:39:43

+0

http://docs.oracle.com/javase/6/docs/api/ java/util/Date.html – Time 2013-03-11 08:03:27

1

你可以尝试实现一种轮询模式....让所有设备实现共同的接口....

Interface DeviceScheduling 
{ 

    public String[] getOnTime(); 

    public String[] getOffTime(); 

    // task to be performed by device 
    public void performTask(); 
    // stop device 
    public void stopTask(); 
} 

所有这些设备添加到List<DeviceScheduling>,然后在特定的时间间隔轮询此列表并检查当前时间是否与getOnTime()getOffTime()返回的任何条目匹配或是否为李。根据比赛情况,请致电performTask()stopTask()