「スレッド」の版間の差分
提供: Java入門
(→関連項目) |
(→関連項目) |
||
行100: | 行100: | ||
* [[Java スレッドの同期 wait notify notifyAll]] | * [[Java スレッドの同期 wait notify notifyAll]] | ||
* [[メインページ]] | * [[メインページ]] | ||
+ | * [[Java スレッドをスリープさせる方法]] | ||
<!-- vim: filetype=mediawiki | <!-- vim: filetype=mediawiki | ||
--> | --> |
2015年9月12日 (土) 12:12時点における版
スレッド(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