2012-01-14 3 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 루프는 무한 루프에 걸리면 비록 자바에서 long 데이터 유형 항상 적은 (MAX_VAL)보다 크기 인 시스템에 의해 유지되는 현재 밀리 보유 . 방법?

+4

무한 루프는 아니지만 수십억 반복의 루프입니다. 완료하는 데 오랜 시간이 걸립니다. 이 질문의 핵심은 무엇입니까? – jackrabbit

+0

그냥 호기심에 의문의 여지가 없습니다. – Lion

답변

1

당신이 사용할 수 있습니다 ... 당신은 당신의 대답을 얻을 것이다 .. 당신이 잠들기 전에 위의 프로그램을 실행하고 아침에 일어 났을 때 출력을 참조하십시오

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

나노 시간이 292 년 후에 넘칠 수 있으므로 문제가 될 수 있습니다. 그러나 currentTimeMillis에는 약 2 억 9 천 2 백만 년이 있습니다.

1

당신이 시간의 비교에 대해 우려하는 경우

+0

반복문에 수십억 개의 반복문이 있기 때문에 프로그램을 실행하는 데 시간이 걸립니다 ... –

관련 문제