Javaのエグゼキュータサービスを使用して、同じコマンドを並行してスケジュールしたいと思います。スレッドプールエグゼキューターのラッパーを作成しました。これは、並列カウントを使用してコマンドをパラメーターとしてスケジュールし、forループでコマンドをスケジュールします(つまり、同じインスタンスを複数回)。
このアプローチは正しいですか?これを行うための提案された方法はありますか?私はこれらの豆を作るために春を使っています。
Javaのエグゼキュータサービスを使用して、同じコマンドを並行してスケジュールしたいと思います。スレッドプールエグゼキューターのラッパーを作成しました。これは、並列カウントを使用してコマンドをパラメーターとしてスケジュールし、forループでコマンドをスケジュールします(つまり、同じインスタンスを複数回)。
このアプローチは正しいですか?これを行うための提案された方法はありますか?私はこれらの豆を作るために春を使っています。
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);