Ctripの[取得]同時実行性とマルチスレッド

 

によって複雑

 

時間の期間、交互にマルチタスク処理する能力。

 

パラレル

 

複数のタスクを処理する能力

危険域

重要な領域は、パブリックリソース(またはリソースの共有)を示すために使用され、それが複数のスレッドで使用することができます。クリティカルセクションのリソースが占有されるとしかし、あなたは唯一の他のスレッドが解放されるリソースを待つ必要があり、このリソースを使用するためには、スレッド一度それを使用することができます。並行プログラムでは、重要な地域資源には、オブジェクトを保護されています。

 

 

スレッドセーフ

スレッド

  • スレッドは、CPUスケジューリングとディスパッチの基本単位であり、タスクの役割は、平均的な処理速度を改善することです。
  • スレッドは、同じプロセス内の他のスレッドとプロセスのすべてのリソースを共有し、独自のスタック操作、プログラム・カウンタ、ローカル変数テーブルや他のリソースを持っています。
  • マルチスレッドの問題がで発生する可能性がありますメモリ、リソースの競合のデッドロックを占めます。
  • CPUリソースをフルに活用するために適切なスレッド数。

ライフサイクルのスレッド(5つの状態)

1.NEW:新しい状態は、スレッドは状態がまだ開始されていない作成されます

  • 方法を作成するには、3つの方法

2.RUNNABLE:準備状態の後に実行する前の状態、(スタートを呼び出します)

  • スレッド開始()を複数回呼び出すことはできません

3.RUNNING:スレッドの状態が実行されたときに実行されているが、)(実行され

  • スレッドは、因子が等時、異常な、ロック、スケジューリングなど、走行終了とすることができるので

4.BLOCKING:ブロッキング状態が、この状態は、次のような状況に入っています

  • 同期のブロッキング:ロックが別のスレッドによって占有されています
  • 積極的に遮断する:睡眠などの権利CPUの実装のためのイニシアチブの特定のメソッドを呼び出すスレッド()、参加()など
  • )待ちの実装を(:阻止するのを待っています

5.DEAD:状態の終了は、実行され()の実行が終了、または異常終了した後の状態ので、この状態は不可逆的です

(スレッド開始)のスレッドを作成する方法3(2種類)の方法を/スレッドを作成します。

1. Threadクラスの継承オーバーライドrun()メソッド

  • 短所:多くの場合、リヒターの置換原則を満たしていません。お勧めできません
  • 短所:タスクが実行され、結果が直接得ることができないが、入手共有変数の助けが必要

2. Runnableを実装

  • 利点:ユーザーがスレッドのrun()メソッドの実現に集中することができ、詳細に、より柔軟かつより少ない露出をプログラムすることができます。
  • 短所:タスクが実行され、結果が直接得ることができないが、入手共有変数の助けが必要
  • 短所:のみsetDefaultUncaughtException()サブルーチンの方法を介してメインスレッドで例外を捕獲するために、

呼び出し可能インターフェースを達成するために3。

  • 戻り値は()の呼び出しによって得ることができます。この問題への呼び出し可能と今後の良い解決策は、あなたが結果を得ることができます
  • ()を呼び出すと、例外をスローすることができます

メソッドクラスTHEAD

そして、Runnableインタフェース呼び出し可能インターフェースの違い

原則スレッドプール、スレッドプールの比較と直接スレッドを開始

 

 

 

 

 

第二に、ロックは何ですか

あなたはJavaでロックされ知っている必要があります

 

 

 

第三に、スレッドの同期

 

第四に、スレッドプール

 

五、ThreadLocalの

 

おすすめ

転載: www.cnblogs.com/zwhu1216/p/11388197.html