Threadを言語仕様の中でサポートしていることは、Javaの大きな特徴の一つ
です。Javaのプログラミングで、このThreadの機能をどのように生かして
使うかは、プログラマにとって大事な問題です。
見かけ上、コンピュータは、沢山の仕事を同時にしているように見えます。
「見かけ」上の沢山の仕事も、よく見れば、それぞれ基本的な構成要素に分割する
ことが出来ます。コンピュータの行う仕事のうち、こうして取り出された基本的な
要素が「スレッド」です。
「スレッド」のレベルでは、ある時点で実行可能な動作は、一意に決まります。
「スレッド」は、二つ以上の動作を実行することは出来ず、sequentialな制御の流れ
に従います。その意味では、sequential なプログラムと、スレッドとの区別は、
あまりありません。
スレッドとプログラムの違いを考える時、次の二つのことが大事なポイントになり
ます。第一は、スレッドは、単独では生存できずに、必ず、プログラムのなか
で生きているということです。第二は、プログラムには、単純な sequential な
プログラムだけではなく、multi-threaded なプログラムがあるということです。
実行されているプログラムは、「プロセス」と呼ばれますが、それとの対比で、 スレッドは、lightweight process と呼ばれることがあります。文字どうり、 「軽いプロセス」という意味です。