最終更新:2017-11-14 (火) 11:01:33 (2326d)
Java/スレッド
新しい実行のスレッドを作成するには 2 通りの方法がある
java.lang.Threadクラスの継承
- Thread クラスを継承したクラスを作る
- Thread.run() メソッドをオーバーライドする
class PrimeThread extends Thread { long minPrime; PrimeThread(long minPrime) { this.minPrime = minPrime; } public void run() { // compute primes larger than minPrime . . . } }
- このクラスをインスタンス化する
- Thread.start() メソッドを呼び出す
PrimeThread p = new PrimeThread(143); p.start();
java.lang.Runnableインターフェイスの実装
- Javaは一つのスーパークラスしかもてない単一継承の言語なので複数のクラスを継承することはできない
- あるクラスを継承しているサブクラスをスレッドとして実行したくてもThreadクラスと同時に継承できない
- そういう場合はRunnableインターフェイスを実装する
class PrimeRun implements Runnable { long minPrime; PrimeRun(long minPrime) { this.minPrime = minPrime; } public void run() { // compute primes larger than minPrime . . . } }
- Threadクラスをインスタンス化する(コンストラクタの引数にRunnableのクラスを渡す)
- Thread.start() メソッドを呼び出す
PrimeRun p = new PrimeRun(143); new Thread(p).start();
メモ
- 全てのスレッドクラスはRunnableインタフェースの実装クラス
スレッドグループ
- Javaの各スレッドは、生成されると同時にあるスレッドグループに割り当てられる。スレッドグループは、java.lang.ThreadGroupクラスによって実装されている。
- スレッドグループ名を明示的に指定しない場合、JavaVMがデフォルトのグループであるmainを割り当てる