next up previous
Next: 10.1 スレッドクラスを継承したクラスとして Up: ソフトウェア第三 講義資料 Java入門,宣言,インタフェース,パッケージ,スレッド Previous: 9.4 java.utilパッケージの利用

10 マルチスレッド

Javaの特徴のひとつに,スレッドを利用できる点にある. スレッド(thread)とは,ひとつのプログラムの中で,逐次的な制御の流 れをさし,ひとつのプログラムの中で複数のスレッドを実行させる ことができ,マルチスレッドプログラムという. Unixでは,プログラムがひとつのプロセス(process)になり,ひとつのプロセスの中に複数 のスレッドを含むという形になる. 複数のスレッドを含みうる大きなプロセ スに対して,スレッドは軽量プロセス(lightweight process)という呼ばれたり する.ひとつのプロセスの中で,複数のスレッドがメモリを共有して 走るが,複数のプロセス間ではメモリ共有はなされていない. マルチスレッドの機能が必要なものとしては, 時々刻々と変化するデータの値をリアルタイムに表示しながら, ユーザが何かの指示をしたい場合に,それを受け付けて, それに対応できないといけない.というときにはマルチスレッド 機能が不可欠である. 通常のプログラムは,図2のようにひとつのスレッドを 走らせているが,プログラムの中でスレッドを生成すると, 図3のように二つが並行して走る.
図 2: 単一スレッド
\includegraphics[width=6cm]{/home/inaba/eps/lecture/fig/SingleThread.eps}
図 3: 二つのスレッド
\includegraphics[width=8cm]{/home/inaba/eps/lecture/fig/TwoThread.eps}
スレッドはスタックやプログラムカウンタなど独立の実行状態を保存して おくための資源を使う必要があるため,スレッドは実行コンテクスト (execution context)と呼ばれたりする. Javaでは,スレッドもオブジェクトの一つで,newオペレータで生成される. 生成されただけでは実行がはじまらず,生成されたスレッドにstartメソッドを 適用するとスレッドはJavaシステムに内蔵されている実行スケジューラに渡され る.実行スケジューラはスレッド実行の待ち行列にこのスレッドを置いて, 待ち行列先頭のスレッドを順に実行する.



generated through LaTeX2HTML. M.Inaba 平成18年5月7日