Mr.D.Chuang 2023-04-24 20:30 采纳率: 100%
浏览 21
已结题

求解:外循环每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

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

  • 写回答

1条回答 默认 最新

  • pzzhao 2023-04-24 20:41
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月6日
  • 已采纳回答 4月28日
  • 创建了问题 4月24日

悬赏问题

  • ¥50 关于在matlab上对曲柄摇杆机构上一点的运动学仿真
  • ¥15 jetson nano
  • ¥15 :app:debugCompileClasspath'.
  • ¥15 windows c++内嵌qt出现数据转换问题。
  • ¥20 公众号如何实现点击超链接后自动发送文字
  • ¥15 用php隐藏类名和增加类名
  • ¥15 算法设计与分析课程的提问
  • ¥15 用MATLAB汇总拟合图
  • ¥15 智能除草机器人方案设计
  • ¥15 对接wps协作接口实现消息发送