並行 (Concurrent) 処理を実装する方法としてスレッドは非常に強力なツールです。 スレッドを使えば同時に1つの処理しか行えない既存のプログラムに大きな修正を加えることなく、 並行処理を実装することが可能です。 またイベントとコールバックを複雑に組み合わせた非同期的なプログラムに比べて、 同期的なプログラム (例えばファイルの読み込みにコールバックが出てきたりしない普通のプログラム)は プログラムの流れを自然に書くことができ、 可読性・保守性・テスト、デバッグのしやすさの面で遥かに優れています。 スレッドを使うとプログラムをそれほど複雑・難読化にせずに並行処理が実装できます。 一方でスレッドを使った並行処理には欠点もあります。 欠点の1つは、スレッドモデルでは1つの処理に対して1つのスレッドを用意するので、 システムのスレッド数の上限で同時に行える処理の数が決まってしまう点です。