Javaでマルチスレッド処理を実装する。
1章:Runnable編です。
今後、2章:Thread編、3章:Executor編を投稿予定です。
昨今のコンピューターが搭載しているCPUは「マルチコア」と呼ばれ、1つのCPUが複数のコアの持っています。
そのため、従来のシングルコアの並行処理のように切り替えることなく同時に複数の処理を進めることができます。
※「並行処理」...シングルコアで処理対象を切り替えながら実行すること
※「並列処理」...マルチコアで同時に処理を実行すること
・対象者
細かい理屈は抜きにとりあえずマルチスレッド処理を体感したい人
・Runnableインターフェースを使用したマルチスレッド処理
手順①:Runnableインタフェースを実装したクラスを作成
実装したクラス内でrunメソッドをオーバーライドします。
runメソッド内に別スレッドで実行したい処理を実装します。
class RunnableThread implements Runnable {
//startメソッドが呼ばれた際に実行される処理
public void run() {
for (int i = 0; i < 3; i++) {
System.out.println("Runnableクラスのrun:" + i);
//処理ごとに1秒間スリープ
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
手順②:スレッドの呼び出し
①で実装したrunメソッドを呼び出すには、①のクラスのインスタンスを作成し、startメソッドを呼び出します。
//スレッド処理を呼び出すクラス
class Main {
public static void main(String[] args) {
//Runnbleインタフェースを実装したクラス(RunnableThread)を指定してインスタンスを生成
Thread thread1 = new Thread(new RunnableThread());
//スレッド処理を開始(別スレッドで実行される)
thread1.start();
//メインスレッドで実行
for( int i = 0;i<3;i++) {
System.out.println("Mainクラス:" + i);
//実行ごとに1秒間スリープ
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
・実行結果
MainクラスとRunnbaleクラスでそれぞれのスレッドが実行されているのが確認できます。
次回は2章:Thread編です!(1章:Runnable編と似ているので理解しやすいと思います。)
お楽しみに!