Java は、Thread クラスの中断() 関数を使用して、スレッドの実行を中断します。
マルチスレッド プログラミングでは、実行中のスレッドを中断する必要がある場合があります。 Java では、Thread クラスの中断() 関数を使用して、スレッドの実行を中断できます。この記事では、interrupt() 関数の使用方法とコード例を紹介します。
interrupt() 関数は、スレッドの実行を中断するために使用されます。この関数を呼び出すと、スレッドの割り込みフラグ ビットが true に設定されますが、この時点ではスレッドは実行をすぐには終了しません。特定の割り込み操作は開発者によって決定され、スレッドの isInterrupted() メソッドを使用して割り込みフラグ ビットを確認し、適切なタイミングでスレッドの実行を終了できます。
次は、interrupt() 関数を使用してスレッドを中断するサンプル コードです。
public class MyThread extends Thread { public void run() { while (!isInterrupted()) { // 线程的执行逻辑 System.out.println("Thread is running..."); } System.out.println("Thread is interrupted, exiting..."); } public static void main(String[] args) throws InterruptedException { MyThread thread = new MyThread(); thread.start(); // 主线程休眠一段时间后中断子线程 Thread.sleep(1000); thread.interrupt(); } }
上記のコードでは、Thread クラスを継承する MyThread スレッド クラスを定義します。 run() メソッドでは、while ループを使用してスレッドの実行ロジックをシミュレートします。各ループを開始する前に、isInterrupted() メソッドを使用してスレッドの割り込みフラグ ビットをチェックし、それが true であればループを終了します。スレッドが中断されると、プロンプトメッセージが出力されます。 main() メソッドで、MyThread スレッド オブジェクトを作成し、start() メソッドを使用してスレッドを開始します。次に、メインスレッドが 1 秒間スリープした後、スレッド オブジェクトの Interrupt() メソッドが呼び出され、スレッドの実行が中断されます。
上記のコードを実行すると、次の出力が表示されます。
Thread is running... Thread is running... Thread is running... Thread is running... Thread is running... Thread is interrupted, exiting...
出力から、スレッドが中断された直後に実行を終了したことがわかります。ここで注意が必要なのは、スレッドが中断されたときに、スレッドがブロック状態(たとえば、sleep()、wait() などのメソッドが呼び出された場合)にある場合は、InterruptedException がスローされることです。例外をキャッチした後、必要に応じて例外を処理できます。
実際の開発では、interrupt() 関数を使用してスレッドを正常に停止できます。 run() メソッド内の適切な位置で割り込みフラグ ビットを判断し、ループを終了するか、他のロジックを処理することにより、スレッドは割り込み信号を受信した後に適切なタイミングで実行を停止し、リソースの不必要な浪費を回避できます。
要約すると、Java の Thread クラスの中断() 関数を使用して、スレッドの実行を中断します。割り込みフラグを適切に判断することで、スレッドの正常な停止を実現できます。マルチスレッド プログラムを作成する場合、interrupt() 関数の使用法を理解し、使いこなすことが非常に重要です。
以上がJavaは、Threadクラスのinterrupt()関数を使用して、スレッドの実行を中断します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。