首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么挂起()方法只执行一次?

为什么挂起()方法只执行一次?
EN

Stack Overflow用户
提问于 2021-02-13 01:16:52
回答 1查看 70关注 0票数 1
代码语言:javascript
复制
class Demo{

    static void hang(){  // Freezes/Hangs the program for some seconds.
        for(int i=0 ; i<100000 ; i++){
            for(int j=0 ; j<10000 ; j++){
                for(int k=0 ; k<10000 ; k++){
                    int b = 5%12000;
                }
            }
        }
    }

    public static void main(String a[]){
        System.out.print("Loading");
        hang();
        for(int it=0 ; it<5 ; it++)
        {
            System.out.print(".");
            hang();
        }
    }
}

hang()方法的任务是在一定时间内对程序进行挂起/冻结(我知道还有其他冻结程序的方法,但我想使用for循环来显示)。但是当我执行这个时,第一个hang()调用(在System.out.print("Loading")下面)占用一定的时间并造成延迟,第一个调用for循环也是延迟,但是其余的调用( for循环中)没有占用任何时间立即执行,也没有看到延迟。

考虑到所有的hang()调用都被调用了(我已经通过在hang()方法中编写一个print语句来检查这一点)。

考虑一下,每次调用int b = 5%12000都需要时间(通过用if(True)替换它,甚至检查它)

相同的代码在c++中工作,即在每个“”之后显示延迟。

c++中的输出类似于Loading[d].[d].[d].[d].[d].

但在Java中,它就像Loading[d].[d]....

[d]是延迟的

如果我将hang()调用替换为hang()方法中的整个方法代码,则它可以工作。

代码语言:javascript
复制
class Demo{

    static void hang(){  // Freezes/Hangs the program for some seconds.
        for(int i=0 ; i<100000 ; i++){
            for(int j=0 ; j<10000 ; j++){
                for(int k=0 ; k<10000 ; k++){
                    int b = 5%12000;
                }
            }
    }

    public static void main(String a[]){
        System.out.print("Loading");
        hang();
        for(int it=0 ; it<5 ; it++)
        {
            System.out.print(".");
            for(int i=0 ; i<100000 ; i++){
                for(int j=0 ; j<10000 ; j++){
                    for(int k=0 ; k<10000 ; k++){
                        int b = 5%12000;
                    }
                }
            }
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-13 01:30:42

一个好的优化器可以发现hang()什么也不做--它没有副作用(除了占用时间),也没有产生任何输出。因此,它优化为“无”。

我怀疑这就是正在发生的事情。

您看到几个“完全”执行的原因是,即时编译器并没有立即在这个例程上松开。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66181039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档