手順、プロセス、スレッド
プログラム:静止、命令のシーケンスです。
プロセス:プログラムの実行は、プロセスは動的であると呼ばれ、シングルコアCPUのみが任意の時点で一つのプログラムを実行することができます。マクロパラレル、シリアル見物人。
スレッド:また、軽量スレッドとして知られています。プロセスがお互いの間で異なるタスクからなる複数のスレッドを有し、交互にマルチスレッドになって、実行されます。
スレッドの一部
CPUタイムスライス:各スレッドのオペレーティングシステム(OS)は、実行時間を割り当てられています
データを操作します:
ヒープスペース:ストレージスレッドオブジェクトは、オブジェクトヒープで共有することができ、複数のスレッドを使用する必要があります
スタック領域:使用するスレッドローカルストレージ変数は、各スレッドは独自のスタックを持っています。
特長スレッド
-
-
プロセスは、コードを参照動的処理手順は、完成した完全なプロセスからロードされます。
-
プロセスは、複数のスレッドを含むが、それ以外の場合、このプロセスは無意味であり、少なくとも一つのスレッドを必要とすることができます。
-
道のスレッドが作成しました
Threadクラスの継承
例:
パブリック クラスTestCreateThread { パブリック 静的 ボイドメイン(文字列[]引数){ 私のMyThread = 新しい)(MyThreadを。 my.start(); } } クラス MyThreadが延びスレッド{ 公共 ボイドランを(){ ために(INTは I = 0、I <50; I ++ ){ System.out.println( "MyThread:" + I)。 } } }
手順の概要
-
-
runメソッドをカバー
-
サブクラスのオブジェクトを作成します。
-
パブリック クラスTestCreateThread { 公共 静的 ボイドメイン(文字列[]引数){ MyRunnable MR = 新しいMyRunnable(); スレッドT2は = 新しいスレッド(MR)を、 t2.start(); } } クラス MyRunnable 実装Runnableを{ @オーバーライド 公共 ボイド(){ラン のために(intは I ++; I <= 50、I = 0 ){ System.out.println(I); } } }
手順の概要
-
-
run()メソッドをカバー
-
実装クラスのオブジェクトを作成します。
-
スレッドオブジェクトを作成します。
-
概要
>二つの方法、より良い理由を達成する方法の比較:
>
> A異なるスレッド操作は、同じタスクを満たすために。その転送同じ実装クラスオブジェクト
>
> B。一度だけ継承されたリソースの不足、継承を使用することは避けてくださいが解決達成することができますので。
一般的な方法
1.スリープ:
公共の静的な無効SLEEP(ロングミリ)
//アクティブな現在のスレッドのスリープミリ秒(ミリ秒)を
あきらめる2:
公共の静的な無効収量を()
//現在のスレッドのタイムスライスをあきらめ、レディ状態への復帰、競争力のあるタイムスロット
3 :組み合わせ
)(公開最終ボイドは参加
//は他のスレッドが現在のスレッドに追加することができ、優先度の実装
ライフサイクル
スレッドが作成され、開始されたときに、スレッドについては、実行状態に入るためのスタートでもない、またそれは、状態の実行中になっています。
ライフサイクルのスレッドでは、彼は異なる種々の状態を経験する[1つの工程では、複数のスレッドが同時に実行するために、CPUのタイムスライスのために競争しています]
新(新入生):スレッドがインスタンス化されます。
レディ(準備完了):開始(後)、スレッドオブジェクトは状態になっています。.... CUPにリソースを割り当てる処理を待っている
(実行)の実行:時間のグラブスライスを、CPUの処理タスクがこのスレッドの起動
、スリープ、スリープまでの時間を待って、待機期間を入力します:TimedWaiting(待機期間)が。
待機中(無期限に待機):wait()を、状態を入力します。スレッドが準備完了状態に目を覚ますために別のスレッドを待たなければなりません。
終了(死亡):死のスレッドのa.runスレッド終了メソッドの実行が完了し、正常終了[通常]