検索
ホームページJava&#&チュートリアルExecutorService を使用して Java でスレッドのタイムアウトを設定する方法

How to Set a Timeout for a Thread in Java Using ExecutorService?

スレッドのタイムアウトを設定する方法

最初の問い合わせで指摘されたように、スレッドの実行を制限する方法について懸念があります。時間。目標は、スレッドが無限ループに入り、親スレッドが無限に待機する可能性がある状況に対処することです。

ここで説明する解決策の 1 つは、スレッドの run() メソッド内で TimerTask を使用することです。ただし、より効率的なアプローチは、ExecutorService クラスを利用することです。これにより、スレッドにタイムアウトを設定するための便利なメカニズムが提供されます。

ExecutorService を使用した実装例は次のように説明できます。

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class TimeoutTest {
    public static void main(String[] args) throws Exception {
        ExecutorService executor = Executors.newSingleThreadExecutor();
        Future<string> future = executor.submit(new Task());

        try {
            System.out.println("Started..");
            System.out.println(future.get(3, TimeUnit.SECONDS));
            System.out.println("Finished!");
        } catch (TimeoutException e) {
            future.cancel(true);
            System.out.println("Terminated!");
        }

        executor.shutdownNow();
    }
}

class Task implements Callable<string> {
    @Override
    public String call() throws Exception {
        Thread.sleep(4000); // Simulate a long-running task that takes 4 seconds
        return "Ready!";
    }
}</string></string>

この例では、Task クラスは長いタスクをカプセル化します。実行中のタスク。 ExecutorService.submit() メソッドは、このタスクを実行のために送信するために使用されます。 submit() によって返される Future オブジェクトは、タスクの結果を取得するメカニズムを提供します。

Future.get() メソッドは、3 秒のタイムアウト引数を指定して呼び出されます。タスクがこの時間枠内に終了すると、結果が返されます。ただし、タスクに 3 秒以上かかる場合は、TimeoutException がスローされます。 catch ブロックでは、タスクがキャンセルされ、「Terminated!」というメッセージが表示されます。

さらに、長時間実行されるタスクでは、タスクが無期限に実行されるのを防ぐために、中断を処理するためのチェックを組み込む必要があることに注意することが重要です。このチェックは Thread.interrupted().

を使用して実装できます。

以上がExecutorService を使用して Java でスレッドのタイムアウトを設定する方法の詳細内容です。詳細については、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ヘンタイを無料で生成します。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 Mac版

SublimeText3 Mac版

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

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません