-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();
}

これらすべてのデバイスを に追加し、特定の間隔でこのリストをポーリングして、現在の時刻がまたはList<DeviceScheduling>によって返されたエントリのいずれかと一致するか、またはそれよりも遅いかどうかを確認します。試合によっては、または.getOnTime()getOffTime()performTask()stopTask()

于 2013-03-11T07:02:47.463 に答える