プロセス:プロセス(プロセス)と呼ばれる実装プログラムは、動的な概念です。
スレッド:プロセスは、複数のスレッドを生成します。リソースの一部は、システムを動作する複数のプロセスで共有することができるように、同じプロセスの複数のスレッドが(例えば:コード、データ)は、このプロセスのために特定のリソースをも共有することができるので、糸はまた、軽量プロセスとして知られている(軽量プロセス)。
プロセスがリソース割り当ての単位であり、スケジューリングおよび実行スレッド単位である:最も基本的な違いは、スレッドおよびプロセスがあること
スレッドを作成します。
まず、継承のスレッド
- Threadクラスの継承
- クラス継承Threadクラスの定義
- オーバーライドrun()メソッド
- ()メソッドのスレッドを開いて実行し、実行を呼び出すためにJVMを伝えるためにスター()メソッドを呼び出します
パブリック クラスは StartThread 延びスレッド{ 公共 ボイドRUN(){ ため(int型 ; Iは<5。I ++はI = 0 {) のSystem.out.println( "音楽を聴きながら" ); } } パブリック 静的 ボイドメイン(文字列[]引数を){ // サブクラスオブジェクト作成 StartThread TH = 新しい新しいStartThreadを(); // スレッドを起動する(必ずしも)すぐに実行しない 。)(th.startの ため(int型 I = 0;私は<5; I ++は){ のSystem.out。 println(「側のコーディング」); } } }
第二に、Runnableを(優先的に使用)を実装
- 声明では、Runnableをカバレッジインタフェースrun()メソッドを実装します
- スレッドにThreadオブジェクトRunnableを引数を作成します。
start()メソッドを呼び出します
パブリッククラスレーサーはRunnableを実装{
//胜利者;プライベート文字列勝者
@Override
ます。public void実行(){
のために(int型のステップ= 1;ステップ<= 50;ステップ++){
//模拟休息
場合(にThread.currentThread()のgetNameを。 ().equals( "ウサギ")&&ステップ%10 == 0){
{試みる
のThread.sleep(100)。
}キャッチ(InterruptedExceptionある電子){
// TODO自動生成キャッチブロック
e.printStackTrace();
}
}
のSystem.out.println(にThread.currentThread()のgetName()+ "--->" +ステップ)。
//比赛是否结束
ブーリアンフラグ=ゲームオーバー(ステップ)。
(フラグ)であれば{
破ります。
}
}
}
プライベートブールゲームオーバー(手順をint型){
場合(勝者= nullを!){
trueを返します。
}他{
場合(ステップ== 50){
勝者=にThread.currentThread()のgetName()。
System.out.println( "勝者==>" +勝者)。
trueを返します。
}
}
falseを返します。
}
パブリック静的無効メイン(文字列[] args){
レーサーレーサー=新しいレーサー()。
新しいスレッド(レーサー、「亀」)(開始)。
新しいスレッド(レーサー、「ウサギ」)(開始)。
}
}
第三に、(私が何を知っていない)呼び出し可能インターフェースを実装