マルチスレッドは、Javaでは避けられない重要なテーマです。以下に、マルチスレッドの学習を開発します。以下のコンテンツは、「JDKにJUCパッケージを追加する」と、スレッドクラスのインターフェイスなどのインターフェイスを含む。
注:JUCパッケージは、Java.util.concurrentパッケージを指します。これは、Java Master Doug Leaによって行われ、JDK 1.5バージョンでJavaに追加されます。
次の章の研究を入力する前に、まずマルチスレッドの関連する概念をいくつか理解します。
スレッドステータス図
説明:
スレッドには、次の5つの状態が含まれます。
1。新しい状態:スレッドオブジェクトが作成された後、新しい状態に入ります。たとえば、スレッドスレッド= newスレッド()。
2。実行可能:「実行可能状態」とも呼ばれます。スレッドオブジェクトが作成された後、他のスレッドはオブジェクトのstart()メソッドを呼び出してスレッドを開始します。たとえば、thread.start()。準備ができた状態のスレッドは、いつでもCPUによって実行されるようにスケジュールされる場合があります。
3。実行状態(実行中):スレッドは実行のCPUアクセス許可を取得します。スレッドは、既製の状態からのみ実行状態に入ることができることに注意する必要があります。
4。ブロック状態:ブロック状態とは、スレッドが何らかの理由でCPUの使用権を放棄し、一時的に実行を停止することを意味します。スレッドが準備が整った状態に入るまで、実行中の状態に行く機会がありません。閉塞には3つのタイプがあります。
(01)ブロックを待つ - スレッドのwait()メソッドを呼び出すことにより、スレッドが特定の作業の完了を待ってください。
(02)同期されたブロッキング - スレッドは、同期化された同期ロックを取得できません(ロックは他のスレッドで占有されているため)、同期されたブロッキング状態に入ります。
(03)その他のブロッキング - スレッドは、スレッドのSleep()またはJoin()を呼び出すか、I/O要求を発行することにより、ブロッキング状態を入力します。 Sleep()状態がタイムアウトしたとき、Join()がスレッドが終了またはタイミングアウトするのを待っているか、I/O処理が完了した場合、スレッドは準備ができた状態に再入力されました。
5。DeadState:スレッドは、例外のために実行()メソッドの実行を終了または終了し、スレッドはライフサイクルを終了します。
これらの5つの状態に関係する内容には、オブジェクトクラス、スレッド、同期キーワードが含まれます。これらの内容は、次の章で1つずつ学習します。
オブジェクトクラスは、wait()、notify()、notifyall()などのスリープ/ウェイク関数を定義します。
スレッドクラスは、いくつかの列スレッド操作関数を定義します。たとえば、Sleep()Sleep機能、割り込み()割り込み関数、getName()getスレッド名など。
同期はキーワードです。同期の機能は、スレッドがオブジェクトの同期ロックを取得できるようにすることです。
wait()、notify()、およびその他のメソッドを後で詳細に導入すると、「wait()、notify()、およびその他のメソッドがスレッドクラスではなくオブジェクトクラスで定義される理由を分析します。