睡眠()と待機()、スレッド状態

Javaでマルチスレッド化先制メカニズムではなく、タイムシェアリングのメカニズムです。プリエンプティブメカニズムは、実行可能な状態にある複数のスレッドで1つだけのスレッドが実行されています。 
共通: 
1.彼らはあなたがプログラムとリターンの呼び出しで指定されたブロックできる、マルチスレッド環境でのミリ秒数です。 
2.待機()と睡眠()缶()メソッドは、スレッドは即座に例外:InterruptedExceptionをスローしているように、割り込みによってスレッドのサスペンド状態を中断します。 
スレッドAが現在のスレッドBを終了したい場合は、この方法は、スレッドBスレッドインスタンスに対応する割り込みを呼び出すことができます。モーメントスレッドBで待機/スリープ/参加の場合は、Bを、スレッド、すぐに{})(糸キャッチの最後に安全にInterruptedExceptionある、ダイレクトリターンをスローします。 
なお、InterruptedExceptionあるがない割り込み、自身のスレッド内からスローされます()メソッドがスローされます。あなたがスレッドを()中断する呼び出すと、共通のスレッドがコードを実行している場合は、その後、スレッドが例外:InterruptedExceptionをスローしないでしょう。しかし、待機中のスレッド()/スリープ()/後 )(参加、 ただちに例外:InterruptedExceptionがスローされます。 
:点を除き、 
各オブジェクトは、アクセス制御を同期させるためにロックしている1。synchronizedキーワードは、同期のスレッドにオブジェクトやロックと対話することができます。 
睡眠の方法は、他のスレッドが使用されてもよいように、ロック、ロック解除待ち方法を放出または同期制御ブロックの方法ありません。 
2.wait、通知とのnotifyAllのみ同期または制御ブロック内で使用するための同期制御方法、及び使用どこでもスリープすることができます 
3.sleepは、例外をキャッチしなければならない、と待機は、通知や例外をキャッチする必要はありませんのnotifyAll 
4.sleepは、指定された時間を中断するために、このスレッドにつながる、他のスレッドに実行する機会Threadクラス(スレッド)の方法であるが、ポストに、ステータス遺骨を監視し、自動的に復元されます。コール睡眠は、オブジェクトのロックを解除しません。
5.waitは、Objectクラスのメソッドである、オブジェクトの通知やのnotifyAllでオブジェクトロックを取得するには、このオブジェクトのロックのプール待ちに入るのを待って、オブジェクトのロックを与えるために、スレッド原因このオブジェクトでwaitメソッドを呼び出して、CPUを待って、待機状態に入ります。

②ロック:睡眠は、他のスレッドを使用することができるように、ロック、ロック解除待ち方法を解放していない最も重要な方法や同期制御ブロックの方法です。

システムリソースを販売しないように眠り、待ち時間がシステムリソースを販売するまで待機するスレッドプールに入るのを待っている、他のスレッドがCPUを占有することができます。あなたは十分ではない、他のスレッドの呼び出しを待つ役に立たないされているリソース待ちのスレッドを実行して/のnotifyAllがプールで待機しているすべてのスレッドをウェイクアップ通知しているため、一般的な待機時間の制限は、それがOS割り当てシステムリソースを待っているレディキューに入りますが、増加しません。それは自動的に目を覚ますように、スリープ(ミリ秒)以下の割り込みよりも()強制的に中断された場合にのみ呼び出すことができ、時間を指定することができます。

役割のThread.sleep(0)され、「オペレーティングシステムは、すぐに再CPUの競争をトリガします。」

③範囲:待機、通知、およびのnotifyAllのみ制御や同期、睡眠中の使用のためのブロックの同期制御方法内側どこでも使用することができます。

   同期(X){ 
      x.notify() 
     //或者待機() 
   }

 


睡眠和待機都需要捕获InterruptedExceptionある: 
パブリック最終ボイドウェイト()InterruptedExceptionある{スロー
ウェイト(0);
}

公共の最後のネイティブのボイド待ち時間は(長いタイムアウト)InterruptedExceptionがスローされます。

公共の静的なネイティブ無効スリープ(長いミリ)が例外:InterruptedExceptionがスローされます。
 
A.スレッドの状態の種類
新しい状態(新)を作成します。1.新しいスレッドオブジェクトを作成します
2.レディ状態(Runnableを):スレッドオブジェクトを作成した後、他のスレッドがオブジェクトのstart()メソッドを呼び出します。プール内の実行可能スレッドが配置されているスレッドの状態は、CPUを使用する権利を獲得するために待機し、実行可能となっています
3.ファイル名を指定して実行状態(実行):CPUへのスレッドの容易なアクセスは、プログラムコードを実行します
4.(ブロック)ブロックされた:スレッドが使用CPUへの権利を放棄するためにいくつかの理由でブロックされて一時的に実行を停止します。レディ状態にスレッド、ランニング行く機会まで。三つのカテゴリーの閉塞の場合:
    (A)、ブロックを待っている:実行待ちスレッドのrun()メソッドを、JVMは、待機プールにスレッドう
    (二)、同期ブロッキング:実行中のスレッドの同期ロックオブジェクトを取得する際、同期ロックが別のスレッドによって占有されている場合、JVMは、スレッドプールにロックされ
    (C)他のブロッキング:実行睡眠のスレッド()又は()メソッドへの参加、またはI / O要求を発行し、JVMは、スレッドがブロックされて設定されます。睡眠()タイムアウト、参加()または終了するスレッドのタイムアウト待ち、またはI / O処理が完了し、準備状態にスレッドを再び
5.死状態(デッド):スレッドの実行がrun()メソッド、ライフサイクルの糸端を介して、または異常終了によるものです
 スレッドの状態図
 
 
 

おすすめ

転載: www.cnblogs.com/wsnan/p/12292926.html