Java 並行プログラミングでは、割り込みとキャンセルはタスクを停止するために使用されるメソッドです。割り込みは、実行中のスレッドを直ちに停止することであり、Thread.interrupt() を呼び出すことで実現されます。キャンセルは、タスクがキャンセル ステータスを明示的に確認して応答する必要がある共同プロセスであり、キャンセル可能なタスクを作成することで実現されます。
並行プログラミングでは、進行中のタスクを中断またはキャンセルする必要がある場合があります。 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()
方法将返回 true
rrreee
InterruptedException
例外をスローします。スレッドはこの例外をキャッチし、タスクの停止やリソースのクリーンアップなど、それに応じて処理できます。 🎜🎜🎜キャンセル🎜🎜🎜キャンセルは、スレッドによる現在のタスクの実行を停止するもう 1 つの方法です。割り込みとは異なり、キャンセルは共同プロセスであり、スレッドがキャンセル ステータスを明示的に確認して反応する必要があります。キャンセルは、java.util.concurrent.Future
インターフェイスを実装するキャンセル可能なタスクを作成することで実現されます。 🎜rrreee🎜タスクがキャンセルされると、Future.isCancelled()
メソッドは true
を返します。スレッドはこのステータスを定期的に確認し、必要に応じてタスクを停止できます。 🎜以上がJava 並行プログラミングでの中断とキャンセルを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。