Frage

Let's observe the following segment of code in Java that uses System.currentTimeMillis() in a for loop.

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);
        }
    }
}

In the above code, the final long type variable CURRENT_MILLIS holds the current millisecond maintained by the system which is always less than (MAX_VAL) the size of the long data type in Java though the for loop gets stuck into an infinite loop. How?

War es hilfreich?

Lösung

If you are concerned about comparison between times you can use

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

This could be a problem with nanoTime as it could overflow after 292 years. However, with currentTimeMillis you have about 292 million years.

Andere Tipps

Please run the above program before you sleep and see the output when you woke up in morning.. You will get your answer...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top