問題タブ [scheduledexecutorservice]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java SchedulerExecutor
最近、リクエストのスループットを制限しなければならないコードを書きました。私は使用ScheduleExecutorService.scheduleAtFixedRate
し、それが仕事をするはずだと信じていました(それはした!)が、スケジュールされたタスクの時間をチェックするためのテストを書き、私は驚いた. 最初のいくつかのタスクは、javadoc が n*period で説明しているようにスケジュールされていませんでした。誰が私に何が欠けているのか説明できますか? そのように機能する場合、なぜjavadocで言及されていないのですか? そして、質問はスケジューラがどのように正確に機能するかです。ソースを調べるのは避けたい:)
例:
このプログラムを実行すると、期待どおりに記録されなかった初回がほとんどないことがわかります。なんで?
java - Future.get() の戻り値が大きすぎる場合の代替ソリューションはありますか?
Future.get() の戻りとして、大きな ScheduledFuture データを取得します。私は、ScheduledFuture は get() が完了したときにのみリターンを取得できると信じています。そのため、私のマシンでは常に「java.util.concurrent.executionexception java.lang.outofmemoryerror Java heap space」エラーが生成されます。
scheduleExecutorService を使用しているときに、返品を分割できる代替ソリューションはありますか? ありがとう。
java - Java の ScheduledExecutorService とスレッド
ここでスケジューラはどのように機能しますか? バックグラウンドで新しいスレッドを作成し、コールバックのようにメイン スレッドで Run メソッドを実行しますか。? . run メソッドが実行されるとき、それはメインスレッドに属していますか?
ありがとう。
java - Java 同時実行: 終了するまで実行
私は現在、次のようなコードのチャンクをリファクタリングしています。
アイデアは、コードの実行に a を使用したいということScheduledExecutorService
です:
ただし、これにはいくつかの懸念があります。まず、main()
スケジューリング後にプログラムが「終了」する (リターンのように) という事実ですが、JVM はScheduledExecutorService
実行されたままであるため、存続します。これは、「外部から終了されるまで実行し続ける」という古いコードの動作を維持するための意図的なものだと思いますが、ScheduledExecutorService
適切にシャットダウンするためにシャットダウン フックをインストールする必要があると思います。それは実際に当てはまりますか、それとも「外部から殺される」ことでシャットダウンフックの実行も妨げられますか?
第二に、私はそもそもシャットダウンフックを持つことについてもきしむ。次のようなコードがあった場合
上記と同じ「外部から殺される」懸念はまだ存在しますか?
編集: はい、元のプログラムはループを突破することなくループします。たとえば、SIGINT(端末のcontrol-C)から終了することのみを目的としていました。かなり曖昧な終了条件ですが、今はそれしかありません...
java - Future からスローされた InterruptedException
次のようなメソッドがあるとします。
はどのようにしてInterruptedException
投げられた (そして巻き込まれたpoll()
) のでしょうか? callable ( を含むInterruptedException
)によってスローされるものはExecutionException
すべて であり、先物をキャンセルすることはなく、サービスshutdownNow()
は決して呼び出されません。
余談ですが、このポーリング方法を次のようなものに対してより防弾にすることは可能InterruptedException
ですか?
java - バックグラウンド スレッドからより均等に負荷を分散する
5 分ごとに実行されるバックグラウンド スレッドがあります。私はScheduledExecutorService
これに使用しています。5 分ごとに、サービスの 1 つを呼び出し、そのサービスから返される応答を解析しています。
現在、上記のコードは 1000 台のマシンで実行されており、それらはすべて同時に開始されているため、5 分ごとに 1000 回すべての呼び出しが同時にサービスに対して行われます。5 分間のウィンドウで負荷をより均等に分散しようとしています。上記のコードでこれを行うことは可能ですか?
すべてのシステムが同時に起動すると、より多くの負荷がかかるように、サービスに同時に負荷がかからないように、5 分間のウィンドウでサービスの負荷をより均等に分散しようとしています。
5 分間のウィンドウで負荷をより均等に分散させるために、次のコードを思いつきました。
これは、5 分間のウィンドウで負荷を均等に分散する正しい方法ですか。
java - 特定のタスクを毎週、毎月、6 か月ごとに実行する方法は?
Javaでcronジョブを作成しています。特定のタスクを毎週、毎月、3 か月、6 か月、9 か月ごとに実行したいと考えています。
私はこのように実行しています -
TestTaskA
毎週、毎月、3 か月ごと、6 か月ごと、9 か月ごとに実行したいのですが、午後 8 時から午前 5 時までの間はタスクを実行したくありません。ランダムな日でも構いません。
TestTaskA
毎週実行している場合は印刷されone-week
、report_week
毎月実行している場合は印刷されone-month
、report_one_month
. 3 か月、6 か月、9 か月も同様です。
これを行う最善の方法は何ですか?心に留めておくと、毎週、毎月、3 か月、6 か月、9 か月ごとに実行することになっている TestTaskB と TestTaskC もあるかもしれません。
これに使えますScheduledExecutorService
か?簡単な例は、私にとって非常に役立ちます。