スレッドの状態:新しい、 作成したばかりのスレッドは、実行されません
Runnableを、準備、準備資源
ブロックされた、ロックを取得するために待機し、中断閉塞を入力し、同期満たしています。
待機中は、通常は()を通知待って、待っているの時間制限なしで、join()メソッドは、ターゲットスレッドが終了するのを待つことです。
時間ウェイティング、
終了;終了
APIのJavaスレッドの基本的な操作:
1.新しいスレッドを作成します。
パブリック クラス CreateThreads 実装したRunnable { @Test 公共 ボイド法1(){ スレッドT1 = 新しいスレッド(){ @Override 公共 ボイド(){実行を するSystem.out.printlnは( "私は元気です!" ); } }。 t1.start(); } @Override 公共 ボイドラン(){ System.out.printlnは( "私は実行可能です" ); } パブリック 静的 ボイドメイン(文字列[]引数){ スレッドスレッド =新しいスレッド(新しいCreateThreads()); thread.start(); } }
2.停止
ストップ()は、一貫性のないデータにつながる容易スレッドを終了するように強制糸出口であってもよいです。
たとえば、次の半分に書き込まれたデータは、スレッドの()端部を停止、別のスレッドがロックを保持し、データの変更を読み取り、現在のスレッドがロックを保持し解放します。
カスタムスレッドが停止します。揮発性変数は、メソッドの変数を変更、ロジックが停止します。
3.割り込みスレッド
割り込みスレッドの調整メカニズムを通すことが重要です
InterruptThreadクラス{パブリック / ** *割り込みは()のみ、終了する方法を決定等しい場合()を停止し、直ちに無条件で終了するためのプロンプトの情報を提供し、スレッドを中断 割り込みをするかどうかを判断するために* isInterruptedをを() 、(* 中断)中断かどうかを判断します割り込みステータスクリア * @throws InterruptedExceptionある * / パブリック静的無効メイン(文字列[] args){例外:InterruptedExceptionがスロー スレッドが新しい新しい=スレッドをスレッド(){ @Override ます。public void RUN(){
//カスタム出口ロジック 間(にThread.currentThreadを().isInterrupted()){ するSystem.out.println( "割り込み終了"); BREAK; } Thread.yieldに(); } }; Thread.start(); Thread.interrupt(); } / ** * SLEEP()スレッドがいくつかの時間のための睡眠とブロックされた状態に入ると、そこに同期化されている場合、シンクブロック他のスレッドがまだ共有データにアクセスできないことを意味し、ロックを解放しませんでしょう。出会い割り込みが例外をスローします * @throws InterruptedExceptionある * / @Test ます。public void TEST2は()InterruptedExceptionある{スロー スレッド=新しい新しいスレッド(){スレッドを @Override ます。public void RUN(){ ながら、(真の){ IF(にThread.currentThreadを( ).isInterrupted()){
//第二サイクルは、割り込みがループのチェックアウトされている のSystem.out.println)( "中断"; ブレーク; } 試み{ のThread.sleep(2000); }キャッチ(InterruptedExceptionあるE){ System.out.println( "SLEEPで中断"); // 2番目の中断 。にThread.currentThread())(中断; } Thread.yield(); } } }; Thread.start(); のThread.sleep(2000); //最初のブレークは、トライセクション内のスレッド、異常トリガ追加再び中断 Thread.interrupt(); } }