Edited at

Javaでマルチスレッド part1

More than 3 years have passed since last update.

Javaでマルチスレッドプログラミング

マルチスレッドを実装するには

大きく二つの方法があります




  • Treadクラスを継承する



  • Runnableクラスを実装する



上記の方法にはあまり大差ありませんが、threadクラスのサブクラスに別のクラスを継承したいときは

Runnableのインターフェースで実装するのがいいでしょう。

実際にコードを書いてみる

とりあえず最初はthreadクラスを継承する方法でやってみます。

//スレッドクラスの継承

class exThread extends Thread{
@Override
public void run(){
for(int i = 0; i < 5; i++){
System.out.println(i+"times thread");
}
}
}

public class thread2 {

public static void main(String[] args){

exThread th = new exThread();
//Threadの開始
th.start();

System.out.println("main()'s thread is finish");

}

}

この場合スレッドを実装するには、threadクラスを継承したサブクラスを

スレッドを実装したいクラスでインスタンスをとります

また、これをRunnableで実装するとこうなります。


//runnableの実装
class exThread implements Runnable{
@Override
public void run(){
for(int i = 0; i < 5; i++){
System.out.println(i+"times thread");
}
}
}

public class thread2 {

public static void main(String[] args){

Thread th = new Thread(new exThread());
//Threadの開始
th.start();
System.out.println("main()'s thread is finish");

}

}

ほとんど変わりません。

クラスを継承するかインターフェースを実装するかの違いです。

ただ両者に共通する点は、runメソッドをオーバーライドするというところです。※オーバーロードではありません

まとめ

スレッドを実装するには方法が二つ


  • Treadクラスを継承する

  • Runnableクラスを実装する

どちらもコード自体に大差はない。

スレッドを実装したいクラスにthreadかrunnableを継承、実装したクラスをインスタンスする

runメソッドをオーバーロードしてその中にスレッドの処理を記述する。

次回は追加でもう少し複雑なマルチスレッドプログラムを作成していきます