Javaに関する様々な情報をご紹介します。

1はじめてのスレッド

Javaに関する様々な情報をご紹介します。

はじめてのスレッド

このページではJavaのスレッドプログラミングの概要について説明します。

スレッドとは

スレッドとは1つのプログラム上で動作するある特定の処理のことを言います。1つのプログラム上でいくつもの処理を同時に実行しているかのように見せたい時に使用します。このようなプログラムのことをマルチスレッドプログラムと言います。

インターネットブラウザはマルチスレッドプログラムです。画像をダウンロードしながら、音楽を聞きながら、画面をスクロールしたり、他のページを閲覧したりと言ったことができます。この場合、「画像をダウンロード」、「音楽を聞く」、「画面をスクロール」、「他のページを閲覧」と言った処理をスレッドと言うことができます。

スレッドプログラムの例

スレッドプログラムを例示します。2つのスレッドを平行して実行させ、1から10までカウントするプログラムです。

例1

//(1)Threadクラスを継承
class ExThread1 extends Thread{
    public void run() {  //(2)スレッド実行コードをrunメソッドに記載
        for(int i = 1; i <= 10; i++) {  //(3)
            System.out.println(getName() + ":" + i);
            try {
                sleep(1000);
            } catch (InterruptedException e) {
            }
        }
    }

    public static void main(String[] args){
        //(4)クラスExThread1のオブジェクトを生成
        ExThread1 thread1 = new ExThread1();
        ExThread1 thread2 = new ExThread1();

        //(5)スレッドの実行
        thread1.start();
        thread2.start();
    }
}

解説1

  1. (1)スレッド処理を行うクラスにおいて、クラスThreadを継承します。
  2. (2)スレッド処理で実行されるコードをrunメソッドに記載します。
  3. (3)runメソッド内では1から10までカウントし、printlnメソッドで実行中のスレッド名とカウント数を表示するプログラムを実行しています。getNameメソッドは現在実行中のスレッド名を返します。printlnメソッドを実行した後、スレッドは1秒間スリープします。
  4. (4)クラスExThread1のthread1オブジェクト、thread2オブジェクトを生成しまず。
  5. (5)startメソッドを実行し、thread1オブジェクト、thread2オブジェクトのスレッドを実行させています。startメソッドはスーパークラスThreadで定義されており、スレッドの実行開始時に呼び出します。startメソッドはrunメソッドを呼び出します。
スレッドの実行

実行結果1

D:\JAVA>javac ExThread1.java

D:\JAVA>java ExThread1
Thread-1:1
Thread-2:1
Thread-1:2
Thread-2:2
Thread-1:3
Thread-2:3  #
Thread-1:4  # thread1オブジェクトのスレッド処理と
Thread-2:4  # thread2オブジェクトのスレッド処理が
Thread-1:5  # 平行して動作している。
Thread-2:5  #
Thread-1:6
Thread-2:6
Thread-2:7
Thread-1:7
Thread-2:8
Thread-1:8
Thread-2:9
Thread-1:9
Thread-2:10
Thread-1:10

D:\JAVA>

1はじめてのスレッド