プログラムの実行を開始すると、
- アプリケーションの場合は、main メソッドの先頭から、
- アプレットの場合は、init メソッドの先頭から、
順に書かれた文が実行されます。この処理の流れをスレッドといいます。
いままでは、単一のスレッドのまま処理を続行し、フレームを作成し(ウィンドウ
リスナを登録し)、ボタンやテキストフィールドを作成し(アクションリスナを
登録したりし)、ボタンがおされたり、テキストフィールドに入力が
されたりするのを(イベントの発生を)待つプログラムを作成してきました。
アニメーションの表示のように処理が長く続く場合や、
論理的に独立した処理が並行するモデルを考えた方が記述しやすい場合、
探索処理のように並行して処理を実行させたい場合など、複数の処理を並行して
実行させたい場合があります。
Java言語では並行して処理したいプログラムを Threadクラスの run メソッドに
まとめ、start メソッドを呼び出して、処理を枝分かれさせることができます。
この枝分かれして、もとの処理と並行して実行される状態をマルチスレッドといいます。
コンピュータの演算装置は通常1個しかありませんが、
複数のスレッドが非常に短い時間で切り替わりながら実行され、
実用上並行して処理されている、といってよい状況になります。
スレッドを枝分かれさせるには、つぎの2種類の方法があります。
- Thread クラスを継承したクラスを定義し、run メソッドをオーバライドする。(17.2 節)
- Runnable インターフェースをインプリメントしたクラスを定義し、
run メソッドを定義する。(17.3節)
いずれの場合も、定義したクラスのインスタンスを生成し start() メソッドを参照すると、
run メソッドに書かれているプログラムが、マルチスレッドとして実行されます。