<目次>
(1) Javaのスレッドとは?概念やサンプルプログラムのご紹介
(1-1) Javaのスレッドとは?
(1-2) 方法①:Threadクラス継承の構文
(1-3) 方法①:Threadクラス継承のサンプルPG
(1-4) 方法②:Runnableインターフェイス実装の構文
(1-5) 方法②:Runnableインターフェイス実装のサンプルプログラム
(1) Javaのスレッドとは?概念やサンプルプログラムのご紹介
(1-1) Javaのスレッドとは?
Javaにおけるスレッドとは、プログラムを実行する際に辿る経路(1つの連続した処理の流れ)の事です。全てのJavaプログラムは少なくとも1つのスレッド(mainスレッド+他)を持ちます。mainスレッドはmain()メソッドが呼ばれた際にJVMにより作られます。
【性能】 並列処理 |
複数の処理を並行で実施する場合など |
【性能】 複数プロセッサの活用 |
Javaのマルチスレッドは、各スレッドを別のプロセッサで実行する事が出来るため、マシンのリソースの有効活用が可能です。 |
(1-2) 方法①:Threadクラス継承の構文
1つ目のスレッド生成方法は「java.lang.Thread」クラスを継承して、Threadクラスのrun()メソッドをオーバーライドする事で生成できます。
//# java.lang.Threadを継承する class ThreadExample extends Thread { //# Threadクラスのrun()メソッドを実装 public void run() { System.out.println("スレッドで動いています"); } }
あとはスレッドを実際に実行する部分ですが、Threadクラスを継承している場合は、そのクラスのインスタンスを生成して、start()メソッドを実行する事で、スレッドの処理が開始します(⇒次の「方法①:Threadクラス継承のサンプルPG」でご紹介)。
(1-3) 方法①:Threadクラス継承のサンプルPG
(サンプル)
public class ThreadSample { //# main文 public static void main(String args[]) { //# スレッドクラスのインスタンス生成 ThreadExample te = new ThreadExample(); //# スレッドで処理実行を開始 te.start(); } } //# java.lang.Threadを継承する class ThreadExample extends Thread { //# Threadクラスのrun()メソッドを実装 public void run() { System.out.println("スレッドで動いています"); } }
(1-4) 方法②:Runnableインターフェイス実装の構文
2つ目のスレッド生成方法は「java.lang.Runnable」インターフェイスを実装(run()メソッドの実装など)する事で生成できます。
(構文)
//# java.lang.Runnableを実装する class ThreadExample2 implements Runnable { //# Runnableインターフェイスのrun()メソッドを実装 public void run() { System.out.println("スレッドで動いています #2"); } }
あとはスレッドを実際に実行する部分ですが、Runnableインターフェイスを実装している場合は、そのクラスのインスタンスを生成して、Threadクラスのコンストラクタの引数として渡してインスタンスを生成し、そのstart()メソッドを実行する事で、スレッドの処理が開始します(⇒参照「方法②:Runnableインターフェイス実装のサンプルプログラム」)。
(1-5) 方法②:Runnableインターフェイス実装のサンプルプログラム
(サンプル)
public class ThreadSample2 { //# main文 public static void main(String args[]) { //# Runnableを継承したThreadExample2インスタンス生成 ThreadExample2 te = new ThreadExample2(); //# Thread型のインスタンス生成 Thread th = new Thread(te); th.start(); } } //# java.lang.Runnableを実装する class ThreadExample2 implements Runnable { //# Runnableインターフェイスのrun()メソッドを実装 public void run() { System.out.println("スレッドで動いています #2"); } }