1

私はこのJavaバージョンを使用しています:

java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.3) (suse-9.1-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)

Javaプログラムを起動すると、たとえば

java TestApp

デフォルトでは、JVMは並行して実行されますか?

もしそうなら、どの部分が並行して実行されますか?

私はこれに興味があります。なぜなら、で実行taskset -c 0 java TestAppをバインドするために使用する場合、最初の実行時間は。よりもはるかに遅いことがわかったからです。これは何かを意味しますか?TestAppprocessor 0java TestApp

4

3 に答える 3

2

独自のスレッドを持つシングルスレッドタスクがいくつかあります。

  • プログラムを実行するメインスレッド
  • ネイティブコンパイラへのバックグラウンドバイトコード
  • ファイナライザースレッド(オブジェクトに対してfinalize()を呼び出すため)
  • GCスレッドプール

あなたのコードはあなたが作成した数のスレッドのみを使用します(そしてあなたのために作成された「メイン」)

于 2012-08-31T19:32:47.070 に答える
1

JVMにはネイティブスレッドがあり、グローバルロックはありません。

于 2012-08-31T16:45:51.670 に答える
0

最初の実行時間は、おそらく主にバイトコードをマシンコードにJITすることです。プロセスが並列シナリオ用に最適化されていることを強く疑うでしょう。

于 2012-08-31T16:48:24.233 に答える