2016-09-01 17 views
0

私は以下の方法を試しています。すべてのスレッドをスケジュールして時間をプリントアウトする方法を理解する必要があります。Javaのすべてのスレッドをスケジュールして実行する時間を開始して終了する

私は実際の実行時間を取得する方法を知っていますが、スレッドの開始に要した時間を印刷する方法を理解できません。ありがとう。

void run() { 
    long startTime = System.currentTimeMillis(); 

    Code goes here..... 

    long endTime = System.currentTimeMillis(); 

    NumberFormat formatter = new DecimalFormat("#0.00000"); 
    System.out.println("Execution time is " + formatter.format((endTime - startTime)/1000d) + " seconds");   
} 
+0

詳細な例を挙げてください、私はあなたの問題は、あなたが実際にメソッドを実行するために開始してスレッドを開始から取られた時間を測定したいと思います。正しい? –

+0

ヒント:時間を測定するときは、 'System.nanoTime()'を使用してください – Olayinka

答えて

0

このような意味ですか?

import java.text.DecimalFormat; 
import java.text.NumberFormat; 

public class MyThread extends Thread { 

    ThreadLocal<Long> timeAtStart = new ThreadLocal<Long>; 

    @Override 
    public synchronized void start() { 
     //override start method and print time when start method was invoked 
     timeAtStart.set(System.currentTimeMillis()); 
     super.start(); 
    } 

    @Override 
    public void run() { 
     long timeToRun = System.currentTimeMillis(); 
     NumberFormat formatter = new DecimalFormat("#0.00000"); 
     System.out.println("Starting thread took " + formatter.format((timeToRun - timeAtStart.get())/1000d) + " seconds"); 

     //Code goes here..... 

     long endTime = System.currentTimeMillis(); 
     System.out.println("Execution time is " + formatter.format((endTime - timeToRun)/1000d) + " seconds"); 
    } 
} 

ありがとうございました。

+0

ありがとうございました! –

関連する問題