求解:外循环每5秒打印一次,内循环每1秒钟打印一次。运行后发现同一秒钟内循环打印了很多次,这是为什么哈?

今天在开发的时候遇到使用循环等待打印的问题,要求:外循环每5秒打印一次,内循环每1秒钟打印一次。
代码如下:

    @Test
    void contextLoads() {
        Boolean success = false;
        int i = 1;
        long time1 = new Date().getTime();
        do {
            System.out.println("===》 外循环 -> 第"+ i + "次");
            i++;
            if (!success){
                int j = 1;
                long time2 = new Date().getTime();
                while (true){
                    long time3 = new Date().getTime();
                    if ((time3-time2) % 1000 == 0){
                        System.out.println("内循环 -> 第"+ j + "次 ,time3 =  "+ time3 + "  ,time2 =  " + time2);
                        j++;
                    }
                    if ((time3-time2) > 5 * 1000){
                        break;
                    }
                }
            }
            if ((new Date().getTime() - time1) > 20 * 1000){
                success = true;
            }
        }while (!success);
    }

但是运行后发现,每次内循环都打印了很多次,而且打印的时间都是一样的,如图:

img


img

这是什么原因哈? 烦请帮忙指点一下哈,十分感谢!

你要是隔几秒打印的话应该用 sleep 方法。而不是这样去无限循环。另外因为你这里没有 sleep,所以 (time3-time2) % 1000 == 0 会打印很多次。现在的电脑程序1毫秒内都是可以运行很多的