Previous | Next | Trail Map | Writing Java Programs | 目次


スレッドの制御

以下は、異なる分類アルゴリズムを動かす3つのアプレットのコピーである。このレッスンはアルゴリズムの分類についてではない。しかし、これらのアプレットは Java 言語の強力な性能 −スレッド− の理解を視覚的に助ける。

                  Bi-Directional
Bubble Sort        Bubble Sort      Quick Sort

    

Your browser doesn't understand the APPLET tag. Here's a screenshot of the sorting applets that you would see running here if it did:


マウスでクリックして、次々にアプレットを開始してみよう。 気が付いたことは? そう! アプレットは同時に並行して実行している! 他に気が付いたことは? そう!3つの分類アプレットがデータを分類するのと同時に、このページをスクロールしたり、ブラウザのパネルを起動することができる。 これらすべてがスレッドの能力による。

スレッドとは何か?

実行コンテキストあるいは軽量プロセスとして知られているスレッドは、プロセス内における制御の単一な逐次フローである。

簡単なスレッドの例

次のプログラムは、2つの独立したスレッドを作成して開始する単純な Java アプリケーションである。

class TwoThreadsTest {
    public static void main (String args[]) {
        new SimpleThread("Jamaica").start();
        new SimpleThread("Fiji").start();
    }
}
class SimpleThread extends Thread {
    public SimpleThread(String str) {
        super(str);
    }
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println(i + " " + getName());
            try {
                sleep((int)(Math.random() * 1000));
            } catch (InterruptedException e) {}
        }
        System.out.println("DONE! " + getName());
    }
}

Thread 属性

効率的に、そしてエラーなしでスレッドを使用するためには、スレッドと Java 実行時システムにおける種々の局面を理解しなくてはならない。 スレッドのために本体を提供する方法、スレッドのライフサイクル、実行時システムがスレッドを予定する方法、スレッドグループ、デーモンスレッドについてとそれらを作成する方法などを知る必要がある。

マルチスレッドプログラム

前述した今までのこのレッスンでのサンプルプログラムは、すべてが1つのスレッドあるいは非同期に実行する複数の独立したスレッドを使用した。 しかし、データを共有し、同期して実行するマルチスレッドを使用することはしばしば便利である。 一般に、複数の同期式スレッドを使用するプログラムはマルチスレッドプログラムと呼ばれ、特別な処理を必要とする。

要約

このレッスンでは、 Java スレッドのライフサイクル、スケジューリング、スレッドグループと同期などを含めて、Java スレッドの複雑さを説明した。 Java 開発環境は言語、ライブラリ、および実行時システムを通してマルチスレッドプログラムをサポートする。 この要約のページでは、スレッドをサポートし、それらの機能の詳細ドキュメントへリンク可能な Java 開発環境におけるすべての機能を強調する。


Previous | Next | Trail Map | Writing Java Programs | 目次