この記事は、Java のマルチスレッドに関する知識の概要と分析を提供します。必要な方は参考にしていただければ幸いです。
プロセス: 実行中のプログラムは、システムによるリソースの割り当てと呼び出しのための独立した単位です。
(3) この比喩では、ケーキを作るためのレシピがプログラムです。
(4) コンピューター科学者はプロセッサー CPU です。 (7) さて、コンピューター科学者の息子が泣きながら出てきて、頭を蜂に刺されたと言うとします。
(8) コンピューター科学者はレシピに従って何をしたかを記録し、それを保存することです。プロセスの現在の状態;
(9) 次に、応急処置マニュアルを取り出し、その指示に従ってください。
(10) この時点で、プロセッサーが 1 つのプロセスから別のプロセスに切り替わっていることがわかります。優先度の高いプロセス;
(11) 各プロセスには独自のプログラム (レシピと応急処置マニュアル) があり、
(12) 蜂に刺された後、コンピューター科学者がケーキを作りに戻ります。 (13) 中断したところから続けます。
スレッドの概要
スレッドの出現は、コンテキスト切り替えの消費を削減し、システムの同時実行性を向上させることを目的としています。
スレッドは、プロセスが 1 つのことしか実行できないという欠点を克服し、プロセス内の同時実行を可能にします。
(2) プロセスが 1 つしかない場合、同時に実行できることは 1 つだけという恥ずかしさが必然的に生じます。つまり、保存時にキーボード入力ができなくなります。複数のプロセスがある場合、各プロセスは 1 つのタスクを担当します。
(4) プロセス A はキーボード入力を担当し、プロセス B は画面上のコンテンツの表示を担当し、プロセス C はコンテンツをハードウェアに保存します。ディスク;(5) ここでの A、B、および C 間のコラボレーションにはプロセス通信の問題が関係しており、それらはすべて同じ内容です: テキスト コンテンツ;
(6) 継続的な切り替えによりパフォーマンスが低下します。(7) A、B、および C がリソースを共有できるメカニズムがある場合;
(8) この方法では、コンテキストの切り替えのために保存および復元する必要があるコンテンツが少なくなります。 ) 同時に、通信によるパフォーマンスの損失を軽減できます。 (10) この機構はスレッドです。
スレッドは軽量プロセスとも呼ばれます。
CPUの基本的な実行単位であり、プログラム実行プロセスの最小単位です。
スレッド ID、プログラム カウンター、レジスタ セット、およびスタックで構成されます
スレッドの導入により、プログラムの同時実行のオーバーヘッドが削減され、オペレーティング システムの同時実行パフォーマンスが向上します。
(2)リソースはプロセスに割り当てられ、同じプロセス すべてのスレッドがプロセスのすべてのリソースを共有します
(3) CPU がスレッドに割り当てられます。つまり、スレッドは実際には cpu
その後、メイン スレッドは特定のクラスの main メソッドを呼び出します。
(1) jvm の開始時にガベージ コレクション スレッドも開始する必要があるため、そうしないとメモリ オーバーフローが発生しやすくなります。
(2) 現在のガベージ コレクション スレッドと前のメイン スレッド。 、少なくとも 2 つのスレッドが開始されるため、jvm の起動はマルチスレッドになります。
良いスタートを切りましょう: スレッドのステータス
##内力メソッド:各オブジェクトが持つメソッド(仕組み)
太祖長泉:基本スレッドクラス
九陰マニュアル:上級マルチ-スレッド制御クラス
New: スレッド オブジェクトが作成されたときの新しい状態、つまりThread t = new MyThread()
Runnable: Ready 状態、スレッド オブジェクトの start() メソッド (t.start()) の場合、新しい状態に入ります。が呼び出されると、スレッドは準備完了状態になります。スレッドが準備完了状態にあるということは、スレッドが準備ができており、いつでも CPU スケジューリングの実行を待機していることを意味します。これは、スレッドが t.start()
(2)スレッドが実行のために実行状態に入りたい場合は、まず準備完了状態でなければなりません。
(3) ブロッキングの原因に応じて、ブロッキング状態は 3 つのタイプに分類できます。
[1 ] ブロッキング待ち: 実行状態のスレッドが wait() メソッドを実行することで、ブロッキング待ち状態になります。
[2] 同期ブロッキング: スレッドが同期ロックの取得に失敗した場合 (原因:ロックが他のスレッドによって占有されている場合)、同期ブロッキング状態に入ります。
[3] その他のブロッキング: スレッドの sleep() または join() を呼び出すか、I/O リクエストが発行されると、スレッドは同期ブロッキング状態に入ります。ブロッキング状態。 sleep() 状態がタイムアウトになるか、join() がスレッドの終了を待つかタイムアウトになるか、I/O 処理が完了すると、スレッドは再度準備完了状態になります。 メソッド: 各オブジェクトにはメソッド
# があります。 ##synchronized、wait、notify はどのオブジェクトにも備わっている同期ツールです
monitor:
wait/notify: 両方が存在する必要があります。同期ブロック内
これらの 3 つのキーワードは同じモニターをターゲットとしています。つまり、待機後に他のスレッドが実行のために同期ブロックに入ることができます
#Taizu Changquan: 基本スレッド クラスThreadLocal クラス:
(3) セッション情報の記録など、ユーザーのログイン制御に一般的に使用されます。
以上がJavaのマルチスレッド知識の要約と分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。