スレッドには以下のようなものである。
1)スレッドとは一つのプロセスの中に作ることがで
きる簡易プロセス
2)スレッドはプロセスに所属する。
3)プロセスのメモリなどのリソースを共有する。動
作が軽い。軽量級のプロセスといわれる。
4)複数のスレッドを一つのプロセスに持つことがで
きる。
5)JVM(Java virtual machine)でスレッドを管理する。
スレッドは以上の性質を持っているため、上手くプログラムを構成すれば、効率のよいプログラムを作成できることが期待でされる。
スレッドの作成の仕方は二つある。
Ⅰ. Threadを拡張したクラス(スレッドクラス)を作る方法
1) Threadクラスを拡張したクラスを作る。
2) Threadにはrunメソッドがあるので、それをオーバーライドする。それが、スレッドの動作内容である。
3) スレッドクラスによりオブジェクトを作成し、start()メソッドでスレッドをスタートさせる。
次のプログラムはこの方法で作成したスレッドのプログラムである。mainで二つのスレッドを作成し、それらをスタートさせている。mainも一つのスレッドである。
Proo17_1.java
class Book extends Thread{ private String title; public Book(String title){ this.title = title; } public void run(){ for(int i=0; i<3; i++){ System.out.println(title + " is being read."); } } } class Proo17_1{ public static void main(String args[]){ Book a = new Book("Book1"); a.start(); Book b = new Book("Book2"); b.start(); for(int i=0; i<3; i++){ System.out.println("main() is running."); } } } /* main() is running. main() is running. main() is running. Book1 is being read. Book2 is being read. Book1 is being read. Book2 is being read. Book1 is being read. Book2 is being read. */
Ⅱ.Runnableインターフェースを使う方法
1) Runnableインターフェースを実装したクラスのオブジェクトを作成する。実装するとき、runメソッドを実装する。それが、スレッドの動作内容である。
2) そのオブジェクトをパラメータとして、Threadのオブジェクトを作る。それが、スレッドのオブジェクトである。
そのスレッドオブジェクトのstartメソッドを起動する。
次のプログラムはこの第二の方法で作成したスレッドのプログラムである。mainで二つのスレッドを作成し、それらをスタートさせている。mainも一つのスレッドである。
Proo17_2.java
class Book implements Runnable{ private String title; public Book(String title){ this.title = title; } public void run(){ for(int i=0; i<3; i++){ System.out.println(title + " is being read."); } } } class Proo17_2{ public static void main(String args[]){ Thread a=new Thread(new Book("Book1")); a.start(); Thread b=new Thread(new Book("Book2")); b.start(); for(int i=0; i<3; i++){ System.out.println("main() is running."); } } } /* main() is running. main() is running. main() is running. Book2 is being read. Book1 is being read. Book2 is being read. Book1 is being read. Book2 is being read. Book1 is being read. */