Javaの財団18日目概要 - マルチスレッド

内容:

1、基本的な考え方:手順、プロセス、スレッド

図2に示すように、スレッドを作成し、使用

/ * ---------------------- * ------------------行の分割/

まず、基本的な考え方:手順、プロセス、スレッド

プログラム:静的コードの期間、静的オブジェクト

プロセス:実行中のプログラムは、動的なプロセスであり、文のサイクルがあります。

スレッド:さらなる改良プロセスは、プログラム内のパスを実行することです。同時に複数のスレッドの並列実行した場合、マルチスレッドをサポートすることです。

各スレッドは、別々のランタイム・スタックとプログラムカウンタ(PC)を有し、スレッドのオーバーヘッドスイッチングは小さいです。

同一のメモリセル/メモリアドレス空間内の複数のスレッドで共有プロセス。

 

メイン()メインスレッド、GC()スレッドガベージコレクション、例外処理スレッド:Javaアプリケーションには、少なくとも3件のスレッドがあります。例外が発生した場合は、メインスレッドに影響を与えます。

 

並列並行:

パラレル:複数のタスクを同時に実行するために、複数のCPU

同時実行:CPUは、複数のタスクを同時に実行します

 

マルチスレッドビット:

対応するアプリケーションを向上させる1。ユーザーエクスペリエンスを向上させます。

CPU使用率を向上させる2。

プログラムの構造を改善する3。

 

とき、私は複数のスレッドが必要なのです。

プログラムは、2つの以上のタスクを実行する必要があります

プログラムは、いくつかのタスクは、ユーザの入力として、待機する必要が実装する必要がある場合、ファイルは読み取りと書き込みの操作、ネットワークオペレーション、検索など

バックグラウンドで実行されているいくつかのプログラムを必要とするとき。

 

第二に、スレッドを作成して使用することは

JVM Java言語は、それがクラスによって具現化され、プログラムが複数のスレッドを実行することができますjava.lang.Threadの

Threadクラスの機能:

各スレッドが操作を完了するために、run()メソッドによって、特定のスレッドオブジェクトである、ボディは頻繁に実行()メソッドは、スレッドのメンバーと呼ばれています

()メソッド)は、(直接の実行を呼び出すのではなく、Threadオブジェクトによってスレッドの開始を開始します

 

Threadクラス

コンストラクタ

スレッド():新しいThreadオブジェクトを作成します。

スレッド(文字列のthreadName):指定されたスレッドとスレッドインスタンス名を作成します

スレッド(Runnableを対象):対象のオブジェクトがスレッドを作成することを指定し実装runメソッド、Runnableインタフェース

スレッド(Runnableをターゲット、文字列名):新しいThreadオブジェクトを作成します。

 

APIは、2つの方法でスレッドを作成します。

JDK1.5最初の2:

Threadクラスは、道を継承します

Runnableを実装する方法を

 

方法1:Threadクラスの継承

定義されたサブクラスは、Threadクラスを継承しています

クラスHelloThreadは} {スレッドを拡張します

サブクラスは、クラスThreadのrunメソッドをオーバーライドします

つまり、スレッドオブジェクトを作成するには、スレッドのサブクラスのオブジェクトを作成します。

スレッドオブジェクトの開始を呼び出します:スタートスレッドがrunメソッドを呼び出します

 

 

 注意点:

1.あなたは手動で実行呼び出した場合()メソッドは、それが複数のスレッドを起動しない、通常の方法です。

呼び出す呼び出しにJVMによって2.run()メソッド、プロセス制御は、CPUスケジューリングによって実行される所定のOSを感じます

3.複数のスレッドを開始するには、startメソッドを呼び出す必要があります

4. Aスレッドオブジェクトのみを起動するstart()メソッド一度呼び出すことができます繰り返した場合に、より多くがスローされます「| IIegalThreadStartException」

 

第二の方法:Runnableを実装します

1.定義サブクラスのRunnableを実装

2.サブクラスは、runメソッドをオーバーライドし、Runnableインタフェース

含むThreadクラスのコンストラクタのパラメータでスレッドオブジェクトを作成します3。

Threadクラスのコンストラクタへの実パラメータとして渡された4、Runnableインタフェースサブクラスオブジェクト

Threadクラスの通話開始方法:スレッドのターンは、サブクラス、Runnableインタフェースrunメソッドを呼び出します

 

連絡先との継承と実装方法の違い

パブリッククラスThreadは、オブジェクトの実装を拡張したRunnable

違い:

継承のスレッド:スレッド・コードは、スレッドのrunメソッドのサブクラスに格納されます

Runnableをを達成する:インタフェースメソッドサブクラスに格納された実行マルチスレッド・コード

 

導入のメリット:

単一継承の制限を回避

複数のスレッドは、Aと同じリソースを処理するために複数のスレッドのための理想的なインターフェースの同じ種類のオブジェクトを共有することができ

 

Threadクラスのメソッドについて

無効スタートは():スレッドを開始し、オブジェクトのrunメソッドを実行します

()を実行:実行の操作スレッドが予定されているとき

文字列のgetName()は:スレッドの名前を返します。

空のsetName():スレッド名を設定します

静的スレッドcurrentThread():現在のスレッドを返します。スレッドのサブクラスは、この中で、メインスレッドは、一般的に実装クラスのRunnableのために使用されています

 

静的な無効収量():スレッド譲歩

参加する():加入ストリームの別のスレッドを呼び出すプログラム()メソッド、サイトを呼び出すには、実行中のスレッドに参加するまで追加のjoin()メソッドになるまでブロックされる場合には

静的な無効スリープ(長いミリ):(指定された時間:ミリ秒)

停止():スレッドがの終わりを宣言することを余儀なくされます

ブールのisAlive():リターンはどうかスレッドがまだ生きているかを決定するために、ブール

 

スレッドのスケジューリング

 

 

 

優先度のスレッド

> MAX_PRIORITY:10

> MIN_PRIORITY:1

> NORM_PRIORITY:5

 

この方法は、以下のものを含みます:

> GetPriority:スレッドの優先順位の値を返します。

>のsetpriority(int型newPriority):スレッドの優先度を変更するには

 

説明:

スレッドが優先順位が作成される継承親スレッド

低優先度だけスケジューリングの低い確率を得ることができ、必ずしもコールは、優先度の高いスレッドの後でした

 

スレッドの分類:サプリメント

デーモンスレッド、ユーザスレッド:2種類のJavaスレッド

彼らはすべての点でほぼ同じであり、唯一の違いは、JVMを残すときの決意であります

デーモンスレッドが開始メソッドの呼び出しthread.setDaemon(真)の前を通ってサービスのユーザスレッドに使用され、ユーザスレッドデーモンスレッドをプログラムすることができます

GCは、典型的なデーモンスレッドです

JVMがデーモンスレッドです、現在のJVMは終了します

画像の理解:鳥がなくなって一度Tusigoupengは、脇に弓をキャスト

 

おすすめ

転載: www.cnblogs.com/zhoutie170821/p/11984363.html