1。知識ポイントを中断します
次の要約はJDK8に基づいています
この記事では、割り込みを完全に説明するものではありませんが、より重要なポイントのみをリストします。 Thread.interruptを完全に理解するために、参照資料を見ることができます。
参照を理解するのに役立ついくつかの新しい記事を次に示します。
割り込みメソッドが呼び出された後、割り込みフラグはブロックされた状態のスレッドに対してTRUEに設定されます。割り込みに応答するかどうか(このフラグビットの変更を認識)は、APIの設計に依存します。 JDKのブロックIO API、同期同期ブロック、およびロック内の多くのメソッド(ロック途中で除外)は、割り込みに応答しません。もちろん、呼び出しスレッドは、フラグビットの判断を使用して、それ自体によって設計されたAPIを割り込みに応答させることができます。
割り込みメソッドが呼び出された後、ターゲットexception **が待機/timed_waiting状態のスレッドにスローされ、割り込みフラグビットfalse **が設定されます。たとえば、スレッドがthread.sleepを呼び出した後、object.wait()。
スレッドが開始されていない(新しい)、または終了した場合(終了)(終了)、cornitid incurte()はそれに影響を与えず、割り込みフラグは設定されません。
ベストプラクティス:いくつかの方法を設計で中断またはキャンセルすることが許可されない場合がありますが、他のスレッドが割り込み要求を送信する場合、他の発信者が「状況を理解する」ように促進するためにマークを維持する必要があります。
パブリックタスクgetNextTask(blockingQueue <task> queue){boolean挿入= false; try {while(true){try {return queue.take(); } catch(arturnedexception e){// fianlly furrateded = trueの依存関係ステータスマーク。 //転倒して再試行}}}最後に{if(挿入)// fianllyで発言します。 }}一部のキャンセル操作は、割り込みを使用して実装できます。例えば:
パッケージの同時; java.util.concurrent.blockingqueue;インポートjava.util.concurrent.callable; import java.util.current.executorservice; import java.util.concurrent.executors;/** * wanshao *によって作成されたjava.util.current.executors; static void main(string [] args)interruptedexception {intrutertask interrupttask = new interrupttask(); executorservice executorservice = executors.newsinglethreadexecutor(); executorservice.submit(arturttask); thread.sleep(100); arturtTask.cancel(); executorservice.shutdown(); }}/***割り込みに応答するタスク*/class untructtaskを実装できます<integer> {private blockingqueue <task> queue; //スレッドを保存するスレッドtを中断します。 @Override public Integer Call()throws arturnedexception {system.out.println( "ブロックされたタスクを開始"); {t = thread.currentThread()を試してください。 thread.currentthread()。sleep(50000); } catch(arturnedexception e){system.out.println( "中断される"); e.printstacktrace(); } return 0; } public void cancel(){system.out.println( "cacel a task ...."); //スレッドを呼び出すcurrentthread()ここでは、スレッドプールのスレッドではなく、メインスレッドを取得します。 }}}要約します
上記は、編集者が導入したJDK8要約に基づくJavaの更新です。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!