2017-02-25 3 views
0

私は非常に正確な時間にプロセスを実行する必要のあるプログラムを持っています。私が現在使っている方法は次の通りです:小さなThread.SleepとJavaタイマーのループですか?

while((exTime - System.currentTimeMillis()) > randomNum) 
{ 
    try 
    { 
     Thread.sleep(0, 5000); //Sleep for 5000 nanoseconds, or 0.000005 seconds 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 
//Code to be executed after time is over. 

私はこれにJavaタイマーを使うこともできます。

私の質問は、最も効率的で正確なものは何ですか?私はwhileループで100以上のスレッドを実行しています。タイマーを使用するとリソースが節約され、より正確になりますか?

+1

ここで「正確さ」はどれくらい正確ですか? 'System.currentTimeMillis'は約15msの精度しか持たないことに注意してください。 5000秒単位で寝るのは意味がないようです... –

+0

可能な限り正確に。代わりに正確に0msといくつかのnsすることが可能ですか? – RaghavJhavar

+0

'System.currentTimeMillis'ではありません。 * relative *時間を測定しようとするならば、代わりに 'System.nanoTime'を使うべきです。 –

答えて

0

タイマーの使用は正確です。あなたが確認できるリソースについて

関連する問題