スケジュールされたタスクのスケジュール設定のために Java で ScheduledThreadPoolExecutor 関数を使用する方法
ソフトウェア システムの複雑さが増すにつれて、システムに関与する非同期タスクがますます増えています。これらの非同期タスクを効率的にスケジュールする方法は、必要なスキルです。 Java では、スケジュールされたタスクのスケジュールに ScheduledThreadPoolExecutor を使用できます。この記事では、ScheduledThreadPoolExecutor の基本的な使用法と、それを使用して非同期タスクのスケジュールされたスケジュールを実装する方法を紹介します。
ScheduledThreadPoolExecutor は、スケジュールされたタスクのスケジューリングを実装する Java に組み込まれたクラスです。 ThreadPoolExecutor クラスを継承し、スレッド プールのすべての特性を備え、指定された時間間隔または遅延時間に従って指定されたタスクを実行できます。
ScheduledThreadPoolExecutor を使用してスケジュールされたタスクをスケジュールするには、次の基本条件を満たす必要があります。
- ScheduledThreadPoolExecutor オブジェクトを作成する
ScheduledThreadPoolExecutor オブジェクトを作成する場合、スレッド プール サイズを指定する必要があります。スレッド プールのサイズによって、同時に実行できるタスクの数と、タスクに必要なリソースの数が決まります。オブジェクトを作成するとき、corePoolSize と minimumPoolSize という 2 つのパラメーターを指定できます。これらは、それぞれコア スレッド プールのサイズと最大スレッド プールのサイズを表します。ここでは、それらを等しい値に設定できます。つまり、固定サイズのスレッド プールを使用します。
- Runnable または Callable タスクの定義
ScheduledThreadPoolExecutor のタスクは、Java クラス ライブラリの Runnable および Callable インターフェイスに基づいて実装されます。タスクを定義するときに、実行可能または呼び出し可能を選択でき、実際のニーズに応じて対応する実装方法を選択できます。
- タスクの実行方法を指定します
ScheduledThreadPoolExecutorでは、タスクの実行方法を指定できます。選択する方法は 2 つあります。1 つは、scheduleAtFixedRate() メソッドを使用する方法で、もう 1 つは、scheduleWithFixedDelay() メソッドを使用する方法です。これら 2 つのメソッドの違いは、scheduleAtFixedRate() メソッドは一定の時間間隔に基づいてタスクを実行するのに対し、scheduleWithFixedDelay() メソッドはタスクの実行完了時刻に基づいて次のタスクの実行時間を計算することです。
以下、コードに基づいてこれらの手順を詳しく紹介します。
- ScheduledThreadPoolExecutor オブジェクトの作成
次に、ScheduledThreadPoolExecutor オブジェクトを作成するための基本的なサンプル コードを示します。
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
このコードでは、Java の Executor を使用します。ツール このクラスは、サイズ 1 のスレッド プールを作成します。 ScheduledThreadPoolExecutor は ThreadPoolExecutor クラスを継承しているため、通常のスレッド プール関連のメソッドを使用してスレッド プールを管理できます。
- Runnable または Callable タスクの定義
ScheduledThreadPoolExecutor では、Runnable インターフェイスと Callable インターフェイスの両方を使用してタスクを定義できます。例:
Runnable task = new Runnable() { @Override public void run() { // 任务内容 } };
または:
Callable<String> task = new Callable<String>() { @Override public String call() throws Exception { // 任务内容 return null; } };
ご覧のとおり、Runnable インターフェイスと Callable インターフェイスを使用してタスクを定義する方法は非常に似ています。唯一の違いは、Callable インターフェイスは値を返す必要があるのに対し、Runnable インターフェイスは値を返す必要がないことです。
- タスクの実行メソッドを指定する
前の紹介によると、ScheduledThreadPoolExecutor には、scheduleAtFixedRate() とScheduleWithFixedDelay() という 2 つのタスク実行メソッドが用意されています。以下に、これら 2 つの方法のそれぞれの使用方法を説明します。
scheduleAtFixedRate()
scheduleAtFixedRate() メソッドを使用して、固定タスクを実行します。このメソッドは、次の 4 つのパラメータを受け取ります:
- 実行するタスク
- 最初のタスク実行の遅延時間
- タスク実行間の時間
- 時間間隔の単位
次に、scheduleAtFixedRate() メソッドの例を示します。
executor.scheduleAtFixedRate(task, 0, 1, TimeUnit.SECONDS);
このコードは、0 秒の遅延の後、タスクが 1 秒ごとに実行されることを意味します。タスクの内容は、事前に定義された Runnable または Callable に実装する必要があります。
scheduleWithFixedDelay()
scheduleAtFixedRate() メソッドと同様に、scheduleWithFixedDelay() メソッドも次の 4 つのパラメータを受け取ります。
- 実行するタスク
- タスクの最初の実行の遅延時間
- 遅延時間の単位
- タスク実行完了の遅延時間
- タスク実行完了の遅延時間の単位タスクの実行
次に、scheduleWithFixedDelay() メソッドの例を示します。
executor.scheduleWithFixedDelay(task, 0, 1, TimeUnit.SECONDS);
このコードは、最初のタスクが 0 秒の遅延後に実行され、その後に実行されることを示します。タスクの実行が完了すると、1 秒遅れて再度実行されます。タスクの内容は、事前に定義された Runnable または Callable に実装する必要があります。
ScheduledThreadPoolExecutor を使用してスケジュールされたタスクをスケジュールする方法をすでに紹介しましたが、ScheduledThreadPoolExecutor のメリットとデメリットをまとめてみましょう。
利点:
- 複数のタスクを同時に実行できる
- スレッド プール内のスレッド数を管理できる #タスクの実行を柔軟に調整する 時間
- は、タスクを特定の時間間隔で実行できる強力なスケジューリング機能を提供します
- タスクのステータスと結果を非同期で取得できない
- タスクの数を動的に増減できない
以上がスケジュールされたタスクのスケジュール設定のために Java で ScheduledThreadPoolExecutor 関数を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Java のアームストロング番号に関するガイド。ここでは、Java でのアームストロング数の概要とコードの一部について説明します。

Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです
