ホームページ Java &#&チュートリアル スケジュールされたタスクのスケジュール設定のために Java で ScheduledThreadPoolExecutor 関数を使用する方法

スケジュールされたタスクのスケジュール設定のために Java で ScheduledThreadPoolExecutor 関数を使用する方法

Jun 26, 2023 pm 05:48 PM
java スケジュールされたタスク scheduledthreadpoolexecutor

ソフトウェア システムの複雑さが増すにつれて、システムに関与する非同期タスクがますます増えています。これらの非同期タスクを効率的にスケジュールする方法は、必要なスキルです。 Java では、スケジュールされたタスクのスケジュールに ScheduledThreadPoolExecutor を使用できます。この記事では、ScheduledThreadPoolExecutor の基本的な使用法と、それを使用して非同期タスクのスケジュールされたスケジュールを実装する方法を紹介します。

ScheduledThreadPoolExecutor は、スケジュールされたタスクのスケジューリングを実装する Java に組み込まれたクラスです。 ThreadPoolExecutor クラスを継承し、スレッド プールのすべての特性を備え、指定された時間間隔または遅延時間に従って指定されたタスクを実行できます。

ScheduledThreadPoolExecutor を使用してスケジュールされたタスクをスケジュールするには、次の基本条件を満たす必要があります。

  1. ScheduledThreadPoolExecutor オブジェクトを作成する

ScheduledThreadPoolExecutor オブジェクトを作成する場合、スレッド プール サイズを指定する必要があります。スレッド プールのサイズによって、同時に実行できるタスクの数と、タスクに必要なリソースの数が決まります。オブジェクトを作成するとき、corePoolSize と minimumPoolSize という 2 つのパラメーターを指定できます。これらは、それぞれコア スレッド プールのサイズと最大スレッド プールのサイズを表します。ここでは、それらを等しい値に設定できます。つまり、固定サイズのスレッド プールを使用します。

  1. Runnable または Callable タスクの定義

ScheduledThreadPoolExecutor のタスクは、Java クラス ライブラリの Runnable および Callable インターフェイスに基づいて実装されます。タスクを定義するときに、実行可能または呼び出し可能を選択でき、実際のニーズに応じて対応する実装方法を選択できます。

  1. タスクの実行方法を指定します

ScheduledThreadPoolExecutorでは、タスクの実行方法を指定できます。選択する方法は 2 つあります。1 つは、scheduleAtFixedRate() メソッドを使用する方法で、もう 1 つは、scheduleWithFixedDelay() メソッドを使用する方法です。これら 2 つのメソッドの違いは、scheduleAtFixedRate() メソッドは一定の時間間隔に基づいてタスクを実行するのに対し、scheduleWithFixedDelay() メソッドはタスクの実行完了時刻に基づいて次のタスクの実行時間を計算することです。

以下、コードに基づいてこれらの手順を詳しく紹介します。

  1. ScheduledThreadPoolExecutor オブジェクトの作成

次に、ScheduledThreadPoolExecutor オブジェクトを作成するための基本的なサンプル コードを示します。

ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
ログイン後にコピー

このコードでは、Java の Executor を使用します。ツール このクラスは、サイズ 1 のスレッド プールを作成します。 ScheduledThreadPoolExecutor は ThreadPoolExecutor クラスを継承しているため、通常のスレッド プール関連のメソッドを使用してスレッド プールを管理できます。

  1. 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 インターフェイスは値を返す必要がないことです。

  1. タスクの実行メソッドを指定する

前の紹介によると、ScheduledThreadPoolExecutor には、scheduleAtFixedRate() とScheduleWithFixedDelay() という 2 つのタスク実行メソッドが用意されています。以下に、これら 2 つの方法のそれぞれの使用方法を説明します。

scheduleAtFixedRate()

scheduleAtFixedRate() メソッドを使用して、固定タスクを実行します。このメソッドは、次の 4 つのパラメータを受け取ります:

  1. 実行するタスク
  2. 最初のタスク実行の遅延時間
  3. タスク実行間の時間
  4. 時間間隔の単位

次に、scheduleAtFixedRate() メソッドの例を示します。

executor.scheduleAtFixedRate(task, 0, 1, TimeUnit.SECONDS);
ログイン後にコピー

このコードは、0 秒の遅延の後、タスクが 1 秒ごとに実行されることを意味します。タスクの内容は、事前に定義された Runnable または Callable に実装する必要があります。

scheduleWithFixedDelay()

scheduleAtFixedRate() メソッドと同様に、scheduleWithFixedDelay() メソッドも次の 4 つのパラメータを受け取ります。

  1. 実行するタスク
  2. タスクの最初の実行の遅延時間
  3. 遅延時間の単位
  4. タスク実行完了の遅延時間
  5. タスク実行完了の遅延時間の単位タスクの実行

次に、scheduleWithFixedDelay() メソッドの例を示します。

executor.scheduleWithFixedDelay(task, 0, 1, TimeUnit.SECONDS);
ログイン後にコピー

このコードは、最初のタスクが 0 秒の遅延後に実行され、その後に実行されることを示します。タスクの実行が完了すると、1 秒遅れて再度実行されます。タスクの内容は、事前に定義された Runnable または Callable に実装する必要があります。

ScheduledThreadPoolExecutor を使用してスケジュールされたタスクをスケジュールする方法をすでに紹介しましたが、ScheduledThreadPoolExecutor のメリットとデメリットをまとめてみましょう。

利点:

  1. 複数のタスクを同時に実行できる
  2. スレッド プール内のスレッド数を管理できる
  3. #タスクの実行を柔軟に調整する 時間
  4. は、タスクを特定の時間間隔で実行できる強力なスケジューリング機能を提供します
欠点:

  1. タスクのステータスと結果を非同期で取得できない
  2. タスクの数を動的に増減できない
#要約すると、ScheduledThreadPoolExecutor は Java タイミング タスクの非常に実用的なツールです。スケジューラーは、非同期タスクを効率的に管理およびスケジュールするのに役立ちます。実際の開発では、特定のビジネス ニーズに応じてこれを使用し、他の Java クラス ライブラリと組み合わせて、より複雑なタスク スケジューリング要件を実現できます。

以上がスケジュールされたタスクのスケジュール設定のために Java で ScheduledThreadPoolExecutor 関数を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Javaの平方根 Javaの平方根 Aug 30, 2024 pm 04:26 PM

Java の平方根のガイド。ここでは、Java で平方根がどのように機能するかを、例とそのコード実装をそれぞれ示して説明します。

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

Javaのアームストロング数 Javaのアームストロング数 Aug 30, 2024 pm 04:26 PM

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

Java の乱数ジェネレーター Java の乱数ジェネレーター Aug 30, 2024 pm 04:27 PM

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

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

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

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

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

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

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

See all articles