2016-04-30 10 views
4

シングルスレッドプロセスとマルチスレッドプロセスについてもっと説明する人がいますか

シングルスレッドプロセスにはスレッドが1つしかありませんか?またはそのプロセスが複数のスレッドを含むことができ、一度に1つのスレッドしか実行できないことを意味します。

もし私が1つのコアプロセッサでJavaプログラムを実行すると、2番目のものが真実になりますか?

もっと詳しく説明できますか?シングルスレッドプロセスにはスレッドが1つしかありませんか?

+1

シングルCPUまたはコアれますプロセス内のスレッド数とは直交しています(4つのオプションはすべて利用可能です)。 – Richard

答えて

2

シングルスレッドプロセスは、単一スレッドのプロセスです。マルチスレッドプロセスは、複数のスレッドを持つプロセスです。

この命名は静的な設定に基づいています。つまり、実行が中断されたときにプロセスを見て、シングルスレッドまたはマルチスレッドのいずれかであると言うことができます。単一のコアまたは複数のコア上でスレッドが実行されるかどうかは、その命名法が重要である限り重要ではない。

複数のスレッドが1つのコアですべて実行されているプロセスは、複数のコアで実行される複数のスレッドを持つプロセスと同様に、競合状態を持つことができます。 2つの状況を区別することは、パフォーマンスの評価にとって重要ですが、正確性のためには逆効果です(潜在的な競合を考慮すると、各スレッドが別々のCPUにあると仮定すると便利です)。

シングルスレッドプログラムは、プログラムで、1つのスレッドしか使用しません。 プロセスにスレッドが追加されている可能性があります。あなたのJavaランタイムの例では、ファイナライザスレッドとおそらくガベージコレクションのための1つ以上のスレッドを持つことが期待できます。これはマルチスレッドプロセスで実行されているシングルスレッドプログラムです。マルチCPU対

(私は「実行中のプログラムの抽象化」と定義「プロセス」を聞いた、あなたがプログラムを書き、その後のプロセスでそれを実行するすなわち。)

関連する問題