我从数据源(文件或dbms)中获取计划。此计划告诉我何时打开设备以及何时关闭设备。例如上午11点,下午12点30分,下午2点,下午3点......等等。该日程安排每天重复进行。每台设备都有自己的时间表。
我想根据他们的日常安排安排所有这些设备。我怎么能用Java做呢?
public class Device{
boolean state;//true is on.
String schedule = "11am ON, 12:30pm OFF, 2PM ON, 3PM OFF...etc";
}
答案 0 :(得分:2)
查看java.util.TimerTask
和java.util.Timer
课程。
您可以使用Timer.schedule
方法安排任务在特定时间运行。也来自官方文件:
计划在指定时间执行指定的任务。如果 时间是过去的,任务是立即安排的 执行。
还有schedule
的其他变体用于安排任何重复执行的任务。
答案 1 :(得分: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()
返回的任何条目匹配或是否为lee 。根据匹配情况,请致电performTask()
或stopTask()
。