5

Javaのエグゼキュータサービスを使用して、同じコマンドを並行してスケジュールしたいと思います。スレッドプールエグゼキューターのラッパーを作成しました。これは、並列カウントを使用してコマンドをパラメーターとしてスケジュールし、forループでコマンドをスケジュールします(つまり、同じインスタンスを複数回)。

このアプローチは正しいですか?これを行うための提案された方法はありますか?私はこれらの豆を作るために春を使っています。

4

1 に答える 1

3

ScheduledExecuterService次のように使用できます。

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class ScheduledExecutorTest {

    private final static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);

    public static void main(final String[] args) throws InterruptedException {
        scheduler.scheduleAtFixedRate(new Runnable() {
            public void run() {
                System.out.println("executed");
            }
        }, 0, 1, TimeUnit.SECONDS);


        Thread.sleep(10000);
        scheduler.shutdownNow();
    }

}

runこれにより、メソッドが毎秒実行され、すぐに開始されます。

このアプローチを使用すると、scheduledExecuterService:に複数回追加できます。

Runnable command = new Runnable() {
    public void run() {
        System.out.println("executed");
    }
};
scheduler.scheduleAtFixedRate(command, 0, 1, TimeUnit.SECONDS);
scheduler.scheduleAtFixedRate(command, 0, 1, TimeUnit.SECONDS);
于 2012-07-08T13:23:11.573 に答える