-4

我从数据源(文件或 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";

} 
4

2 回答 2

2

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

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

安排指定任务在指定时间执行。如果时间是过去,则安排任务立即执行。

还有其他变体schedule,您也可以安排任何任务以重复执行。

于 2013-03-11T06:53:14.750 回答
1

你可以尝试实现一种轮询模式……让你的所有设备都实现一个通用接口……

Interface DeviceScheduling
{   

    public String[] getOnTime();

    public String[] getOffTime();

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

将所有这些设备添加到 a 中List<DeviceScheduling>,然后以特定的时间间隔轮询此列表并检查当前时间是否匹配或是否比getOnTime()or返回的任何条目更晚getOffTime()。根据匹配调用performTask()stopTask().

于 2013-03-11T07:02:47.463 回答