Javaでマルチスレッドプログラム
マルチスレッドってそれとなくわかった気になって、使っていたのですが
改めて調べ直してみました。
マルチスレッドとは
複数の処理が一つのプログラム上で動いているように見せる方法。
種類
- Threadクラスを継承
- Runnableインターフェイスを実装
- shynchronized
実戦
まず、『Treadクラスを継承』をやってみました。
Threadクラスのサブクラスを作って、そこに
runメソッド(=スレッド化したい処理)とmainメソッド(=スレッドを実行)
を書きます。
public class ExThread1 extends Thread { public void run () { // 10 9 8 ... 2 1 0 for ( int i = 10; i >= 0; i-- ) { System.out.println(getName() + ":" + i); try { // 1秒間ストップ sleep(1000); } catch ( InterruptedException e ) { } } } /** * @param args */ public static void main(String[] args) { ExThread1 thread1 = new ExThread1(); ExThread1 thread2 = new ExThread1(); thread1.start(); thread2.start(); } }
実行結果
Thread-1:10 Thread-2:10 Thread-1:9 Thread-2:9 Thread-2:8 Thread-1:8 Thread-1:7 Thread-2:7 Thread-1:6 Thread-2:6 Thread-1:5 Thread-2:5 Thread-1:4 Thread-2:4 Thread-1:3 Thread-2:3 Thread-1:2 Thread-2:2 Thread-1:1 Thread-2:1 Thread-2:0 Thread-1:0
ちなみにThread-1とThread-2を交互に実行していますが
1が終わった後に2をしたい場合は以下。
… thread1.start(); try { thread1.join(); } catch ( InterruptedException e ) { } thread2.start(); …
スレッドの完了を待つ『joinメソッド』を使います。
参考URL
http://www.javaroad.jp/java_thread1.htm
http://www.tohoho-web.com/java/thread.htm
http://www.ne.jp/asahi/hishidama/home/tech/java/thread.html