15.スレッド

 main()メソッドから始まって順番に実行される処理の流れのことをスレッド(thread)と呼ぶ。 スレッドを複数起動して複数の処理を同時に実行することができる。

  1. スレッドの起動
    1. Threadクラスを拡張し、 run()メソッドを定義して準備
      class クラス名 extends Thread
      {
      	public void run()
      	{
      		別スレッドで行ないたい処理;
      	}
      }
      
    2. Threadクラスのサブクラスのオブジェクトを作成
    3. start()メソッド(Threadクラスから継承したメソッド)の呼び出しで新しいスレッドを起動
      (ここでスレッドが増えて2つになる)
    4. 新しいスレッドは、run()メソッドの処理を開始し、
      run()メソッドが終了すると終了する
  2. スレッドの操作
  3. スレッドの起動(その2)
    1. Runnableインターフェイスを実装し、 run()メソッドを定義して準備
      class クラス名 extends スーパークラス名 implements Runnable
      {
      	public void run()
      	{
      		別スレッドで行ないたい処理;
      	}
      }
      
    2. オブジェクトを生成
    3. Threadクラスのオブジェクトを作成
    4. start()メソッドの呼び出しで新しいスレッドを起動
  4. 同期(synchronization)

     複数のスレッドがフィールドを共有する場合、排他制御(mutual exclusion)が必要となる。