Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Java

Javaのスレッドとは?概念やサンプルプログラムのご紹介

投稿日:2021年6月20日 更新日:

 

<目次>

(1) Javaのスレッドとは?概念やサンプルプログラムのご紹介
 (1-1) Javaのスレッドとは?
 (1-2) 方法①:Threadクラス継承の構文
 (1-3) 方法①:Threadクラス継承のサンプルPG
 (1-4) 方法②:Runnableインターフェイス実装の構文
 (1-5) 方法②:Runnableインターフェイス実装のサンプルプログラム

(1) Javaのスレッドとは?概念やサンプルプログラムのご紹介

(1-1) Javaのスレッドとは?

Javaにおけるスレッドとは、プログラムを実行する際に辿る経路(1つの連続した処理の流れ)の事です。全てのJavaプログラムは少なくとも1つのスレッド(mainスレッド+他)を持ちます。mainスレッドはmain()メソッドが呼ばれた際にJVMにより作られます。

スレッドは複数個を同時に使う事で威力を発揮する事ができ、1プロセスの中で並列に処理を実行したりする事で、より効率的な処理を行う事が可能になります。
 
(表)スレッドの使いどころ
【性能】
並列処理
複数の処理を並行で実施する場合など
【性能】
複数プロセッサの活用
Javaのマルチスレッドは、各スレッドを別のプロセッサで実行する事が出来るため、マシンのリソースの有効活用が可能です。
また、メイン処理に影響を与えずに、メインの処理の裏で複数の処理を実行したい場合などに活用する事ができます。次の節ではスレッドの定義方法を2つご紹介します。

 

(1-2) 方法①:Threadクラス継承の構文

1つ目のスレッド生成方法は「java.lang.Thread」クラスを継承して、Threadクラスのrun()メソッドをオーバーライドする事で生成できます。

(構文)
//# java.lang.Threadを継承する
class ThreadExample extends Thread {

    //# Threadクラスのrun()メソッドを実装
    public void run() {
        System.out.println("スレッドで動いています");
    }

}

 

あとはスレッドを実際に実行する部分ですが、Threadクラスを継承している場合は、そのクラスのインスタンスを生成して、start()メソッドを実行する事で、スレッドの処理が開始します(⇒次の「方法①:Threadクラス継承のサンプルPG」でご紹介)。

目次にもどる

(1-3) 方法①:Threadクラス継承のサンプルPG

(サンプル)

public class ThreadSample {
    //# main文
    public static void main(String args[]) {
        //# スレッドクラスのインスタンス生成
        ThreadExample te = new ThreadExample();
        //# スレッドで処理実行を開始
        te.start();
    }

}

//# java.lang.Threadを継承する
class ThreadExample extends Thread {

    //# Threadクラスのrun()メソッドを実装
    public void run() {
        System.out.println("スレッドで動いています");
    }

}
(図131)
 

(1-4) 方法②:Runnableインターフェイス実装の構文

2つ目のスレッド生成方法は「java.lang.Runnable」インターフェイスを実装(run()メソッドの実装など)する事で生成できます。

(構文)

//# java.lang.Runnableを実装する
class ThreadExample2 implements Runnable {

    //# Runnableインターフェイスのrun()メソッドを実装
    public void run() {
        System.out.println("スレッドで動いています #2");
    }
}

 

あとはスレッドを実際に実行する部分ですが、Runnableインターフェイスを実装している場合は、そのクラスのインスタンスを生成して、Threadクラスのコンストラクタの引数として渡してインスタンスを生成し、そのstart()メソッドを実行する事で、スレッドの処理が開始します(⇒参照「方法②:Runnableインターフェイス実装のサンプルプログラム」)。

目次にもどる

(1-5) 方法②:Runnableインターフェイス実装のサンプルプログラム

(サンプル)

public class ThreadSample2 {
    //# main文
    public static void main(String args[]) {
        //# Runnableを継承したThreadExample2インスタンス生成
        ThreadExample2 te = new ThreadExample2();
        //# Thread型のインスタンス生成
        Thread th = new Thread(te);
        th.start();
    }

}

//# java.lang.Runnableを実装する
class ThreadExample2 implements Runnable {

    //# Runnableインターフェイスのrun()メソッドを実装
    public void run() {
        System.out.println("スレッドで動いています #2");
    }
}
(図151)
 

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-Java

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

JDBCドライバとは?概要や使い方をご紹介

<目次> (1) JDBCドライバとは?概要や使い方をご紹介  (1-1) JDBC及びJDBCドライバとは?   (1-1) JDBC API   (1-2) JDBCドライバマネージャー   (1 …

APサーバ(Java)⇒DBサーバ(OracleDB 11g)へJDBC接続する方法まとめ

(0)目次 (1) 前提条件 (2) JDBCドライバーのインストール  (2-1) JDBCドライバーをダウンロード  (2-2) APサーバにアップロード・解凍 (3) プログラムの実装  (3- …

オープンアドレス法をJavaで実装したプログラムのサンプルをご紹介

<目次> (1) オープンアドレス法をJavaで実装したプログラムのサンプルをご紹介  (1-1) オープンアドレス法とは  (1-2) Javaのサンプルプログラムの全体像  (1-3) Javaの …

Javaのアノテーションを自作する方法をご紹介(サンプルプログラム付き)

(1) 自作アノテーションの作成~使用の手順  (1-1) アノテーションの宣言  (1-2) メタアノテーションの追加(任意)  (1-3) アノテーションを実際に使う(注釈の付与)  (1-4) …

Javaのメソッドで複数の戻り値を返却する方法

<目次> (1) Javaのメソッドで複数の戻り値を返却する方法  (1-1) 同じ型の値を複数返却したい場合 ⇒ 配列やList   ◎ポイント   ◎サンプル  (1-2) 異なる型の関連する値を …

  • English (United States)
  • 日本語
Top