答えて

2

「プロセス内」と言ったときにあなたが念頭に置いていることはわかりませんが、スレッドのスケジューリングはオペレーティングシステムに依存しますが、ほとんどのOSではスレッドやスレッドを要求する方法がありますが、またはプロセスの優先順位。 Javaでは、スレッド優先度をThread.setPriotityメソッドで設定できますが、Javaランタイムライブラリは、私が認識しているプロセス優先度を公開しません(ただし、一般的にプラットフォーム固有のライブラリを使用できます)。

スレッドが実際に並列で実行されるかどうかは、任意の時点で個別のプロセッサでスケジューリングされるかどうかによって異なります。それ以外の場合、それらは並行して実行されませんが、お互いに先取りすることができます。これは、OSがスレッドを一時停止してから別のスレッドに切り替える前にスレッドを実行することを意味します。

OSの多くは、プロセッサに「親和性」を割り当てる方法も提供しています。これはスレッドを特定のプロセッサで実行する可能性を高めるために使用できますが、これも標準のJavaランタイムライブラリ。

+0

実際に私はそれを知りたがっています。プロセッサ内に2つのプロセスがあるとします.1つはコア、1つはJavaプログラムのプロセスです。私たちのプログラムの中には2つのスレッドがあります。プロセッサがプログラムプロセスに時間を与えて実行すると、どのように実行されますか...第1オプション...スレッドは同時にコードを実行します。並列(または)2番目のオプションです。スレッドスケジューラとそのコードを実行する? –

+0

プロセッサコアが1つだけの場合、スレッドは実際には並列に実行できません。だから、私はあなたのシナリオを正しく理解すれば、第2の選択肢だけが可能だと思う。 – Aaron

関連する問題