2012-01-14 7 views
-3

forのループでSystem.currentTimeMillis()を使用するJavaの次のコードセグメントを見てみましょう。上記のコードでJavaのループでのSystem.currentTimeMillis()の使用

package loops; 

final public class Main 
{ 
    public static void main(String... args) 
    { 
     final long MAX_VAL=Long.MAX_VALUE; 
     final long CURRENT_MILLIS=System.currentTimeMillis(); 

     System.out.println("MAX_VAL = "+MAX_VAL); 
     System.out.println("CURRENT_MILLIS = "+CURRENT_MILLIS); 

     for(long time = 0; time < CURRENT_MILLIS; time++) 
     { 
      System.out.println("inside for = "+time); 
     } 
    } 
} 

、可変final longタイプCURRENT_MILLISforループが無限ループにはまり込むのに常にJavaでlongデータ型の未満(MAX_VAL)サイズであり、システムによって維持される現在のミリ秒を保持しています。どうやって?

+4

無限ループではありませんが、数十億回の反復があります。それは完了するのに非常に長い時間がかかります。この質問のポイントは何ですか? – jackrabbit

+0

好奇心だけではなく、疑問点はありません。 – Lion

答えて

1

はあなたが使用することができます...あなたはあなたの答えを得るでしょう..あなたが寝る前に、上記のプログラムを実行し、午前中に目が覚めたときに出力を確認してください

while (System.currentTimeMillis() - start < RUN_TIME) 

これは292年後にオーバーフローする可能性があるため、nanoTimeの問題となる可能性があります。しかし、currentTimeMillisには約2億9200万年があります。

1

あなたは時間との比較が心配な場合

+0

ループのために何十億もの繰り返しがあるので、プログラムを実行するには時間がかかるでしょう... –

関連する問題