マルチスレッドって何?
まず、スレッドとは1つの計算処理の単位である。
実行スレッドとはアプリケーションの命令を最初から1つずつ順番に実行するための実行の制御のことである、
マルチスレッドプログラミングとは、複数のスレッドを同時に実行させることである。
マルチスレッドの目的は、1つのアプリケーション内にできるだけ多くのスレッドを与えることである。
そのためには、スレッド間でCPUを共有する必要がある。
Javaではスレッドをサポートするために以下のクラスとインターフェースを提供している。
・java.lang.Threadクラス
・java.lang.Objectクラス
・java.lang.Runnableインターフェース
Threadクラスを使用したJavaのサンプル(Threadクラスをextends)
以下のサンプルを見たらわかるが、coount.start()のように、start()を呼び出すとrun()が実行される。
package mutlithread; public class ThreadSample1 { public static void main(String[] args) { Counter count = new Counter(); System.out.println("Count Start!!"); count.start(); for (int i = 0; i < 15; i++) { System.out.println("あ"); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } }
Threadクラスを継承する。
package mutlithread; public class Counter extends Thread { public void run() { for (int i = 0; i <= 15; i++) { System.out.println(i + ","); try { Thread.sleep(100); } catch (InterruptedException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } } } }
実行結果
Count Start!! あ 0, 1, あ あ 2, 3, あ あ (略) 14, 15,
というように、2つのスレッドが並行して動いていることがわかる。
Threadクラスを使用したJavaのサンプル(Runnableをimplements)
今度はRunnableをimplementsする形でのマルチスレッドプログラミングのサンプル
package mutlithread; public class ThreadSample2 { public static void main(String[] args) { RunnableCounter count = new RunnableCounter(); Thread th = new Thread(count); System.out.println("count thread start!!"); th.start(); for (int i = 0; i < 15; i++) { System.out.println("い"); try { Thread.sleep(100); } catch (InterruptedException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } } System.out.println("main thread is finished!"); } }
こちらはRunnableをimplementsしている。
package mutlithread; public class RunnableCounter implements Runnable { public void run() { for (int i = 0; i < 15; i++) { System.out.println(i); try { Thread.sleep(100); } catch (InterruptedException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } } System.out.println("counter thread is finished!"); } }
実行結果は以下のとおり。
count thread start!! い 0 1 い (略) い い 13 い 14 main thread is finished! counter thread is finished!
わかりづらいけれど、2つのスレッドが並行して実行されていることがわかる。
読んだ本

SUN教科書 Javaプログラマ(SJC-P) 5.0・6.0両対応(試験番号310-055、310-065)
- 作者: ポール・サンヘラ,山本道子,株式会社トップスタジオ
- 出版社/メーカー: 翔泳社
- 発売日: 2009/05/13
- メディア: 単行本(ソフトカバー)
- 購入: 10人 クリック: 139回
- この商品を含むブログ (18件) を見る
感謝のプログラミング
今回で感謝のプログラミングは【449時間目】
10000時間まで、あと【9551時間】