ホームページ > Java > &#&チュートリアル > Java 並行プログラミングでの中断とキャンセルを処理するにはどうすればよいですか?

Java 並行プログラミングでの中断とキャンセルを処理するにはどうすればよいですか?

WBOY
リリース: 2024-05-09 08:06:02
オリジナル
1108 人が閲覧しました

Java 並行プログラミングでは、割り込みとキャンセルはタスクを停止するために使用されるメソッドです。割り込みは、実行中のスレッドを直ちに停止することであり、Thread.interrupt() を呼び出すことで実現されます。キャンセルは、タスクがキャンセル ステータスを明示的に確認して応答する必要がある共同プロセスであり、キャンセル可能なタスクを作成することで実現されます。

Java 并发编程中如何处理中断和取消?

Java並行プログラミングでの中断とキャンセルの処理方法

並行プログラミングでは、進行中のタスクを中断またはキャンセルする必要がある場合があります。 Java には、このような状況を処理するための 2 つのメソッド (割り込みとキャンセル) が用意されています。

割り込み

割り込みは、スレッドが現在のタスクの実行を停止できるようにするメカニズムです。これは通常、ユーザーが操作をキャンセルした場合やエラーが発生した場合など、タスクを直ちに停止する必要がある場合に使用されます。スレッドは、Thread.interrupt() メソッドを呼び出すことで中断できます。 Thread.interrupt() 方法可以中断线程。

// 中断线程
Thread thread = new Thread(() -> {
    // 线程执行的任务
    while (!Thread.currentThread().isInterrupted()) {
        // 运行任务
    }
});
thread.start();

// 在某些条件下中断线程
if (condition) {
    thread.interrupt();
}
ログイン後にコピー

被中断的线程会抛出 InterruptedException 异常。线程可以捕获此异常并做出相应的处理,例如停止任务或清理资源。

取消

取消是另一种让线程停止执行当前任务的方法。与中断不同的是,取消是一个协作过程,需要线程明确检查其取消状态并做出反应。通过创建实现 java.util.concurrent.Future 接口的可取消任务,可以实现取消。

// 创建可取消任务
ExecutorService executorService = Executors.newFixedThreadPool(1);
Future<?> task = executorService.submit(() -> {
    // 线程执行的任务
    while (!task.isCancelled()) {
        // 运行任务
    }
});

// 在某些条件下取消任务
if (condition) {
    task.cancel(true);
}
ログイン後にコピー

当任务被取消时,Future.isCancelled() 方法将返回 truerrreee

中断されたスレッドは InterruptedException 例外をスローします。スレッドはこの例外をキャッチし、タスクの停止やリソースのクリーンアップなど、それに応じて処理できます。 🎜🎜🎜キャンセル🎜🎜🎜キャンセルは、スレッドによる現在のタスクの実行を停止するもう 1 つの方法です。割り込みとは異なり、キャンセルは共同プロセスであり、スレッドがキャンセル ステータスを明示的に確認して反応する必要があります。キャンセルは、java.util.concurrent.Future インターフェイスを実装するキャンセル可能なタスクを作成することで実現されます。 🎜rrreee🎜タスクがキャンセルされると、Future.isCancelled() メソッドは true を返します。スレッドはこのステータスを定期的に確認し、必要に応じてタスクを停止できます。 🎜

以上がJava 並行プログラミングでの中断とキャンセルを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート