7

Javaで、以下のようなループで1000スレッドを起動した場合、実際に実行中のスレッド数とスレッドが消費するCPUリソースをタスクマネージャで監視する方法はありますか?

for(int j=0; j<=1000; j++)
{
    MyThread mt = new MyThread ();
    mt.start ();
}
4

6 に答える 6

2

VisualVMまたはJConsoleまたはその他の監視ツールを使用できます

于 2012-08-21T11:24:42.440 に答える
2

Windows タスク マネージャーを意味する場合は、[プロセス] タブに表示される列をカスタマイズできます。

Menu View > Select Columns > Threads

編集

簡単なテストでは、追加のスレッドを作成するとそのカウンターが 1 つ増加し、そのスレッドが終了するとカウンターが減少することがわかります。

ただし、おそらくさまざまな JVM スレッドも含まれているため、複数のスレッドで開始されます (19 のスレッドで開始されます)。jconsole は、モノスレッド プログラムでも 10 個のスレッドを表示することに注意してください。

ビジュアル VM を使用すると、デーモン スレッドと非デーモン スレッド (すべての JVM スレッドはデーモン) の間の分割を確認できます。

テストコード:

public static void main(String[] args) throws InterruptedException {
    Thread.sleep(3000);
    Runnable r = new Runnable() {

        @Override
        public void run() {
            try {
                Thread.sleep(10000);
            } catch (InterruptedException ex) {}
        }
    };

    for (int i = 0; i < 5; i++) {
        new Thread(r).start();
        Thread.sleep(1000);
    }
    Thread.sleep(10000);
}
于 2012-08-21T11:28:44.810 に答える
1

コードでは、Thread.activeCount()メソッドを使用できます

于 2012-08-21T11:25:45.247 に答える
1

VisualVMはこの目的のためのより良いツールだと思います。すべてのプラグインをダウンロードしてインストールすると、スレッドとより多くの情報が得られます。

于 2012-08-21T11:25:54.653 に答える
0

この perpers (MXBean) には Managed Bean を使用できます。たとえば、ThreadMXBean です。

MXBean を取得するには、単に呼び出します

ManagementFactory.getThreadMXBean() 

メソッド getThreadCount() および getCurrentThreadCpuTime() が役に立ちます。

于 2012-08-21T13:24:51.233 に答える