「スレッド」の版間の差分

提供: Java入門
移動: 案内検索
(ページの作成:「スレッド(thread)とは、並列処理(マルチスレッド)を実現するための仕組みです。Javaは、マルチスレッドをサポートしていま...」)
(相違点なし)

2015年3月28日 (土) 20:19時点における版

スレッド(thread)とは、並列処理(マルチスレッド)を実現するための仕組みです。Javaは、マルチスレッドをサポートしています。ウェブサーバが複数のリクエストを同時に処理するときに、マルチスレッドを利用すれば、対応できます。

読み方

スレッド
すれっど
thread
すれっど

概要

並行して処理を行うときに、スレッドを利用します。複数のWebAPIにリクエストを送る場合に、シーケンシャルに問い合わせを行うよりも並列で問い合わせをしたほうが、合計でかかる時間が変わってきます。

スレッドの実装方法

  • java.lang.Thread クラスを継承する
  • java.lang.Runnable インターフェースを実装する

Thread と Runnable の違い

  • Thread はクラス
  • Runnable はインターフェース

Javaは、多重継承を許されないため、他のクラスを継承するサブクラスの場合は、Runnable を使用します。継承の制約がない場合は、Threadクラスを継承します。

Threadを用いた例 thread1

Threadを継承し、run()を定義します。

ソースコード thread1.java

/**
 * The Class X.
 */
class X extends Thread {
        public void start () {
                System.out.println("Start: " + Thread.currentThread().getName());
                super.start();
        }
        public void run () {
                System.out.println ("Run: " + Thread.currentThread().getName());
        }
}
 
/**
 * The Class thread1.
 *
 * @author kaoru
 */
public class thread1 {
 
        /**
         * The main method.
         *
         * @param args the arguments
         */
        public static void main(String[] args) {
                X t = new X ();
                t.start ();
                try {
                        t.join ();
                } catch (Exception e) {
                        e.printStackTrace ();
                }
                System.out.println ("end");
        }
}

コンパイル

javac thread1.java

実行例

$ java thread1
Start: main
Run: Thread-0
end

Runnable を利用した例 runnable1

Runnableインタフェースを実装します。run()を定義します。

ソースコード runnable1.java

/*
 * runnable1.java
 * Copyright (C) 2015 kaoru <kaoru@bsd>
 */
class MyRunnable implements Runnable {
        public void run() {
                System.out.println("Run");
        }
}
public class runnable1
{
        public static void main(String[] args) {
                MyRunnable r = new MyRunnable();
                Thread t = new Thread(r);
                t.start();
        }
}

コンパイル

javac runnable1.java

実行例

$ java runnable1
Run

関連項目