Java Threadマルチスレッド
1698 ワード
Javaマルチスレッドを使用するプログラミングは簡単で、2つの方法があり、2つの方法はいつもインタフェースjavaを実現する.lang.Runnable.
方法1:クラス実装インタフェースRunnableを作成し、そのクラスのインスタンスをパラメータとしてThread構造関数に伝え、Threadインスタンスを作成する.
方法2:
Javaを継承します.lang.Thread,このクラスのオブジェクトを作成する.この方法は一般にrunメソッドを書き換えるが,そうでなければスレッドは何もせずに終了する.
2つの方法の比較:両者は同じ機能を実現することができ、Javaは単一継承であるため、後者は他のクラスを継承することができず、使用方法1は他のクラスを継承することができる.前者の利点は,スレッド間で共有するデータをクラスのフィールドとし,そのクラスをSingletonとして実現し,1つのオブジェクトのみをインスタンス化し,パラメータとしてThreadに伝えることである.もちろん、メンバーを共有するのではなく、Threadごとに異なるRunnableオブジェクトを提供する.後者が共有を実現するには、継承されたクラスにstatic属性の山を宣言する必要がある.
Java Threadはメソッドstartによって起動する、実際に実行される内容はメソッドrunにある.ただしthreadのようにrunを簡単に呼び出す.run(); runを普通の方法として呼び出しただけで、新しいスレッドは起動しなかった.runのコンテンツの実行が完了すると、スレッドは自動的に終了する.クラスThreadは静的方法sleepを提供する.このメソッドを呼び出すと、現在実行されているスレッドを指定した時間だけ一時停止することができる.
方法1:クラス実装インタフェースRunnableを作成し、そのクラスのインスタンスをパラメータとしてThread構造関数に伝え、Threadインスタンスを作成する.
public class ThreadTest implements Runnable {
public void run() {
System.out.println("hello world " + Thread.currentThread().getName());
}
public static void main(String[] args) {
ThreadTest t = new ThreadTest();
for(int i=0; i<5; i++) {
Thread thread = new Thread(t, "thread" + i);
thread.start();
}
System.out.println("aaaaaaaaaaa");
}
}
方法2:
Javaを継承します.lang.Thread,このクラスのオブジェクトを作成する.この方法は一般にrunメソッドを書き換えるが,そうでなければスレッドは何もせずに終了する.
public class ThreadTest2 extends Thread{
@Override
public void run() {
System.out.println("hell world");
}
public static void main(String[] args) throws InterruptedException {
ThreadTest2 thread = new ThreadTest2();
thread.start();
System.out.println("**************");
}
}
2つの方法の比較:両者は同じ機能を実現することができ、Javaは単一継承であるため、後者は他のクラスを継承することができず、使用方法1は他のクラスを継承することができる.前者の利点は,スレッド間で共有するデータをクラスのフィールドとし,そのクラスをSingletonとして実現し,1つのオブジェクトのみをインスタンス化し,パラメータとしてThreadに伝えることである.もちろん、メンバーを共有するのではなく、Threadごとに異なるRunnableオブジェクトを提供する.後者が共有を実現するには、継承されたクラスにstatic属性の山を宣言する必要がある.
Java Threadはメソッドstartによって起動する、実際に実行される内容はメソッドrunにある.ただしthreadのようにrunを簡単に呼び出す.run(); runを普通の方法として呼び出しただけで、新しいスレッドは起動しなかった.runのコンテンツの実行が完了すると、スレッドは自動的に終了する.クラスThreadは静的方法sleepを提供する.このメソッドを呼び出すと、現在実行されているスレッドを指定した時間だけ一時停止することができる.