マルチスレッド達成するための多くの方法がありますが、一般的には、以下の3つです。
1、Threadクラスの継承、オーバーライドrun()メソッド。
1)スレッドクラスのサブクラスで、クラスおよびオーバーライドrun()メソッドを定義し、run()メソッドのメソッド本体は、タスクを完了するためのスレッドを表します。したがってrun()メソッドが実行可能と呼ばれています。
2)スレッドのサブクラスのインスタンスを作成し、スレッドオブジェクトを作成することです。
3)スレッドを開始するスレッドオブジェクトのstart()メソッドを呼び出します。
2、Runnableを、オーバーライドrun()メソッドを実装します。
1)クラス、Runnableインタフェースを実装し、書き換え処理()メソッドを実行し、同じスレッドのrun()メソッドは、実行可能です。
2)Runnableを実装するクラスのインスタンスを作成し、そのためスレッドのスレッドオブジェクトを作成する対象の一例として、スレッドオブジェクトは、実際のスレッドオブジェクトです。
3)スレッドを開始するスレッドオブジェクトのstart()メソッドを呼び出します。
図3に示すように、スレッドは、インターフェイスおよび使用FutureTask呼び出し可能ラッパーを実装することによって達成されます。
1)呼び出し可能インターフェースの実装クラスを作成し、器具()メソッドの呼び出し、実行の方法ボディコール()メソッドは、スレッドの本体です。
2)FutureTaskは、呼び出し可能なオブジェクトクラスを包装用いて実装クラス呼び出し可能のインスタンスを作成し、オブジェクトは、()の呼び出しのFutureTask呼び出し可能オブジェクトをカプセル化方法の値を返します。
3)使用FutureTaskを作成し、ターゲットThreadオブジェクトとして新しいスレッドを開始するオブジェクト。
4)サブスレッドの実行が終了した後、戻り値を取得するFutureTaskオブジェクトのget()メソッドを呼び出します。
実装の比較の長所と短所の三種類:
1、Runnableを、呼び出し可能インターフェースを達成するために:
利点:
1)Threadクラスの実装、Runnableインタフェースのみ(JDK1.0開始)、または呼び出し可能インターフェース(JDK1.5開始)、それはまた、他のクラスから継承することができます。
2)複数のスレッドは、複数のスレッドがCPUから分離することができる同一のリソース、およびコードデータは、より良好な明確なモデルを構成するオブジェクト指向の考え方を反映する場合に対処するために、同じ対象物が同一で共有することができます。
3)最大の利点を達成するために複数のスレッドを作成するための呼び出し可能インターフェースを使用すると、戻り値を持つことができるということです。
短所:
あなたが現在のスレッドにアクセスしたい場合は少し複雑なプログラミング、あなたがにThread.currentThread()メソッドを使用する必要があります。
2、相続Threadクラスのメソッドを使用します:
利点:
あなたがにThread.currentThread()メソッドを使用せずに、現在のスレッドにアクセスしたい場合は、ライト、シンプルで、直接使用これは、現在のスレッドを取得します。
短所:
クラスThreadクラスを継承しているスレッド、継承することはできません(Javaで単一継承)他のクラスなので、これは柔軟ではありません。
追加情報:
1)呼び出し可能な所定のオーバーライド()メソッドの呼び出し、Runnableをrun()メソッドをオーバーライドします。
2)タスクの完了後に呼び出し可能な戻り値を実行することができる;のRunnableタスクは、戻り値を持たないことです。
3)呼び出し()メソッドは例外をスローすることができ、RUN()メソッドができません。
4)非同期計算の結果を表し今後の呼び出し可能オブジェクトを取得することができ、タスクを実行します。これは、計算の完了を待って、計算結果を確認するために、計算をチェックする方法が完了しています。今後のオブジェクトによって、あなたが結果を得ることができ、タスクの実行をキャンセルし、任務の実装を理解することができます。