1

わかりましたので、以下のように2つのスケジュールがあります。エグゼキュータ サービスとスケジューラの新しいインスタンスがあることがわかります。

スケジューラの単一のインスタンスがあり、異なる時間に実行したい 2 つのタスクがあることを確認します。これは、以下の構成では、スケジューラの既存のインスタンスを再スケジュールしているだけということですか?

複数のスケジューラ インスタンスが必要ですか?

エグゼキュータ サービスとスケジューラをインスタンス化する

    //Creates Executor Instance
    final ExecutorService es = Executors.newSingleThreadExecutor();

    // Creates a Scheduler instance.
    Scheduler scheduler = new Scheduler();

最初の繰り返しタスクのスケジュールを作成する

    // Schedule a once-a-week task at midday on Sunday.
    scheduler.schedule("* 12 * * 7", new Runnable() {
        public void run() {
            Log.i(CLASS_NAME, "ConstituentScraper Schedule");

            es.submit(new ConstituentScraper());
        }
    });

2 番目の繰り返しタスクのスケジュールを作成する

    // Schedule a once-a-day task.
    scheduler.schedule("* 7 * * 1-5 | * 18 * * 1-5 ", new Runnable() {
        public void run() {
            Log.i(CLASS_NAME, "SummaryScraper Schedule");

            es.submit(new SummaryScraper());
        }
    });
4

1 に答える 1

0

上記に対する答えはイエスです。スケジュールごとに個別のスケジューラ インスタンスが必要です。

したがって、結果として、コードは次のようになります。

2 つのスケジュールがある場合、インスタンスはそれぞれに個別に設定されます。

    // Creates a Constituent Scheduler instance.
    Scheduler constituentScheduler = new Scheduler();

    // Creates a Summary Scheduler instance.
    Scheduler summaryScheduler = new Scheduler();   

そして、各スケジュールは個別に設定できます

    // Schedule a once-a-week task at 8am on Sunday.        
    constituentScheduler.schedule("0 8 * * 7", new Runnable() {
        public void run() {
            Log.i(CLASS_NAME, "ConstituentScraper Schedule");

            es.submit(new ConstituentScraper());
        }
    });


    //scheduler.schedule("28 7 * * 1-5 | * 18 * * 1-5 ", new Runnable() {
    summaryScheduler.schedule("0 7 * * 1-5 |0 18 * * 1-5 ", new Runnable() {
        public void run() {
            Log.i(CLASS_NAME, "SummaryScraper Schedule");

            // TODO only put in queue if a working day
            es.submit(new SummaryScraper());
        }
    });

各スケジュールは、セットアップ後に開始する必要があります。

    // Starts the Scheduler
    constituentScheduler.start();

    // Starts the Scheduler
    summaryScheduler.start();
于 2013-09-24T06:48:00.050 に答える