2

2 つのタスクが必要です。HandlerA と HandlerB は、それぞれ 10 秒ごとと 20 秒ごとに実行されます。この解決策が間違っている場合、これを達成するための最良の方法は何ですか?

ScheduledExecutorService stp = Executors.newScheduledThreadPool(8);
stp.scheduleAtFixedRate(new HandlerA(), 0, 10, TimeUnit.SECONDS);
stp.scheduleAtFixedRate(new HandlerB(), 0, 20, TimeUnit.SECONDS);

別のタスクをスケジュールすると、スケジュールされたタスクは上書きされますか?

4

2 に答える 2

3

あなたの解決策は正しいです。2 つの別々のタスクをスケジュールしています。ScheduledThreadPoolExecutor のコア プール サイズは 8 です。これは、2 つのスケジュールされたタスクを並行して実行するのに十分です。

于 2013-01-09T10:37:28.947 に答える
1

なぜ聞くのですか?その解決策は問題ありません。を呼び出すたびにscheduleAtFixedRate、個別のスケジューラが開始されます。つまり、HandlerA2 回追加すると、2 つの独立したスケジューラで実行されます。

于 2013-01-09T10:26:08.137 に答える