問題タブ [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.

0 投票する
2 に答える
493 参照

java - 制限付きの ScheduledThreadPoolExecutor の送信メソッドは、完全なキューの解放後に ThreadFactory を呼び出さない

let corePoolSize = 4、submit (または scheduleAtFixedRate など) メソッドへの 4 回の呼び出しの後、クエリが満たされ、メソッド getActiveCount() が正しい値 4 を返します。future.cancel(true) によるキャンセル作業タスクの後、getActiveCount( の値が減少します。 ) = 3、しかし、新しい送信 (または scheduleAtFixedRate など)t call factory method Thread newThread(Runnable r) of ThreadFactory, before that was caused, and itは間違っていると思います。送信が成功した後、getQueue() はゼロです。また、明示的に作成せずに RejectedExecutionException が発生することはありません

後でコードのどこかに

0 投票する
1 に答える
360 参照

java - ScheduledThreadPoolExecutor: タスクに優先順位を付ける方法は?

優先度に従って Task を実行する ScheduledThreadPoolExecutor が必要です。2 つ以上のタスクが即時実行のために保留中の場合、最も優先度の高いタスクを最初に呼び出す必要があります。

実際には、ThreadPoolExecutor の解決策はありますが、ScheduledThreadPoolExecutor の解決策はありません。これは、BlockingQueue 引数を持つコンストラクターを提供しないためです。

参照: Java Executors: タスクの優先度を設定するにはどうすればよいですか?

0 投票する
1 に答える
2911 参照

android - Android - ScheduledExecutorService を停止しようとしています

アクティビティの create メソッドで次のコードを使用しています -

ご覧のとおり、5 秒ごとにサービスを呼び出しています。

マニフェストでサービスを次のように宣言しました-

ScheduledExecutorService を宣言した同じアクティビティに、終了ボタンがあります。

それを押すと、次のように ScheduledExecutorService を停止しようとしました-

あるいは

もちろん、finish() はアクティビティを終了するためのものです。

しかし、問題は、そのボタンを押した後でも scheduleTaskExecutor が停止しないことです。

それはなぜですか?

あらゆる種類の助けをありがとう

0 投票する
1 に答える
199 参照

java - ScheduledExecutorsService を使用して木曜日の午後 7 時以降に特定のタスクを実行するにはどうすればよいですか?

毎週木曜日の午後 7 時以降にいつでもジョブを実行するようにスケジュールしようとしています。しかし、これまでのところ、以下のコードを使用して木曜日に実行することはできますが、午後 7 時以降は実行できません。

私はScheduledExecutorsServiceこれに使用しています。木曜日の午後 7 時以降に実行する方法はありますか?

どんな提案でも大いに役立ちます。タスクを実行するマルチスレッドの方法を使用する必要があります。私のtasksでは、現在、並行して実行しているクラスが2つしかないため、3つ以上のクラスがあります。

0 投票する
2 に答える
3696 参照

java - スケジュールされたエグゼキューター: 修正レートで結果をポーリングし、タイムアウトまたは結果が有効な場合は終了します

問題: 修正レートで dao メソッドを 10 秒ごとに呼び出す必要があるため、結果が有効かどうかを確認する必要があります。タイムアウト (たとえば 2 分) が終了しました。

アプローチ: タスクとスケジューラ ロジックを分離しておき、同様の要件を持つさまざまなクラスで使用できるようにタスクを記述したいと考えています。

私が考えることができる 1 つの方法は、新しいポーラー タスクを定義することです。

ユーザーは単にタスクと isValid の実装を提供する必要があります。

次に、プーリングの頻度とタイムアウトを取り、スケジュールされたエグゼキューターを作成してこのタスクを送信する別のクラスを定義できます

ユーザーは pollerExecutor.isDone が true を返すまで待機して結果を取得できるようになりました。次の目的で 3 つのエグゼキューターを使用する必要がありました。

  1. 固定間隔でタスクを実行するエグゼキュータ
  2. タイムアウトが終了したときにすべてを停止するエグゼキュータ
  3. タイムアウト前に有効な結果が得られた場合、executor はすべて停止します。

誰かがより良いアプローチを提案できますか?