0

メソッドが完了するまでにかかる合計時間を計る必要があります。通常は次を使用します。

long startTime = System.currentTimeMillis();
MethodWithThreads(); // the method which uses threading
long endTime = System.currentTimeMillis();
total = endTime - startTime;

明らかに問題は、メインスレッドが残りのスレッドの前に終了することです。スレッド関数内には次のコードがあります。

int cores = Runtime.getRuntime().availableProcessors();
ExecutorService pool = Executors.newFixedThreadPool(cores-1);
for(int i = 0; i < 1000; i++)
     {
      pool.submit(new RunnableThread());
     }
pool.shutdown();

では、スレッド メソッドが終了するまでの合計時間をどのように見つけるのでしょうか?

4

1 に答える 1

1

バカな私…もっと研究すべきだった。while ループで isTerminated を使用し、終了を待ちました。

 while(!pool.isTerminated())
            {
                try {
                 pool.awaitTermination(1000, TimeUnit.SECONDS);
                 } catch (InterruptedException ex) {
                    Logger.getLogger(ThreadManagement.class.getName()).log(Level.SEVERE,null, ex);
                 }
            }
            long endTime = System.currentTimeMillis();
于 2012-11-13T05:12:33.793 に答える