System.currentTimeMillis()在Java循环中的使用

System.currentTimeMillis()在Java循环中的使用,java,halting-problem,Java,Halting Problem,让我们观察一下Java中的以下代码段,它在for循环中使用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(

让我们观察一下Java中的以下代码段,它在
for
循环中使用
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);
        }
    }
}
包循环;
最终公开课主
{
公共静态void main(字符串…参数)
{
最终长最大值=长最大值;
最终长电流_MILLIS=System.currentTimeMillis();
System.out.println(“MAX_VAL=“+MAX_VAL”);
System.out.println(“当前_MILLIS=“+当前_MILLIS”);
用于(长时间=0;时间<电流_毫秒;时间++)
{
System.out.println(“inside for=“+time”);
}
}
}

在上面的代码中,
final long
type变量
CURRENT_MILLIS
保存系统维护的当前毫秒,该毫秒始终小于Java中
(MAX_VAL)
long数据类型的大小,尽管
for
循环陷入无限循环。如何操作?

请在睡觉前运行上述程序,并在早晨醒来时查看输出。。如果您关心可以使用的时间之间的比较,您将得到您的答案…

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

这可能是nanoTime的一个问题,因为它可能在292年后溢出。然而,使用currentTimeMillis,你有大约2.92亿年。

这不是一个无限循环,而是一个有数十亿次迭代的循环。只是需要很长时间才能完成。这个问题的重点是什么?没有问题,只是好奇而已。因为循环将有数十亿次迭代,运行程序将需要时间。。。