スレッドの作成(Threadクラス)|Javaから楽しく学ぶ!ゲームプログラミング専門学校

Javaから楽しく学ぶ!ゲームプログラミング専門学校

ゲームプログラミングとはその名のとおりゲームのプログラムを作ることを指します。『Javaから楽しく学ぶ!ゲームプログラミング専門学校』ではゲームプログラミングについて、実際にゲームプログラムをJAVAプログラミング言語を使用し、作成していきながら詳しく解説していきます。

スレッドの作成(Threadクラス)

一つのプログラムにスレッドを複数起動させることで、複数の処理を同時に行わせることができます。

スレッドを起動させるためには、JavaクラスライブラリのThreadクラスを継承する必要があります。

まずはサンプルを記載します。

public class CarThread extends Thread{
private String carName;

public CarThread(String carName){
this.carName = carName;
}

public static void main(String[] args){
CarThread car1 = new CarThread("インサイト");
CarThread car2 = new CarThread("プリウス");

car1.start();
car2.start();

}

public void run(){
for(int i = 0; i < 5; i++){
try{
sleep(1000);
}catch(Exception e){}
System.out.println(carName + " : " + i + "回目の処理です。");
}
}
}

【実行結果】
インサイト : 0回目の処理です。
プリウス : 0回目の処理です。
プリウス : 1回目の処理です。
インサイト : 1回目の処理です。
インサイト : 2回目の処理です。
プリウス : 2回目の処理です。
プリウス : 3回目の処理です。
インサイト : 3回目の処理です。
プリウス : 4回目の処理です。
インサイト : 4回目の処理です。


実行結果を見ると、2つのスレッドがそれぞれ別々に処理を実行していること何となくわかるかと思います。

以下に上記サンプルコードの解説を記述します。


Threadクラスを利用して新しいスレッドを作成するために、まずはThreadクラスを継承します。
public class CarThread extends Thread{
………
}

次にThreadクラスを継承したクラスにrun()メソッドを宣言します。
run()メソッドは特殊なメソッドとなっており、スレッドとして実行したい処理を記述します。
    public void run(){
for(int i = 0; i < 5; i++){
try{
sleep(1000);
}catch(Exception e){}
System.out.println(carName + " : " + i + "回目の処理です。");
}
}

スレッドはインスタンスごとに持つことになります。
ですので、スレッドごとにインスタンスを作成します。
今回の例では「car1」と「car2」の2つのインスタンスを作成しています。
つまり、新しいスレッドを2つ作成していることになります。
        CarThread car1 = new CarThread("インサイト");
CarThread car2 = new CarThread("プリウス");

これで、スレッドを起動する準備が整いました。
あとは、start()メソッドを呼び出せば新しいスレッドが起動します。
        car1.start();
car2.start();

start()メソッドを呼び出すことによりrun()メソッドに記述した処理が実行されます。

ここで注意が必要です。
新しいスレッドとして実行させるためにはrun()メソッドを直接呼び出しても意味をなしません。
run()メソッドを直接呼んでしまうと、それは新しいスレッド上で処理されるのではなく、呼び出したスレッド上で処理されてしまい、マルチスレッドにはなりません。

start()メソッドを呼び出すことで、新しいスレッドが起動され、その新しいスレッド上でrun()メソッドが処理されるのです。

トラックバック:0Edit
Copyright © Javaから楽しく学ぶ!ゲームプログラミング専門学校 All Rights Reserved.
当サイトのテキストや画像等すべての転載転用・商用販売を固く禁じます