for(;;)和while(true)的区别

核能气质少年 提交于 2020-08-11 21:16:31

        在看线程池源码处理空闲时间逻辑时,看见 for(;;) ,之前也见过,但是项目代码中无限循环经常使用 while(true),就查了一下有何区别。

        写一个测试类,创建两个方法,分别使用for(;;) 和 while(true) 实现无限循环,查看编译后的class 文件(命令:javap -c Test.class) 都是优化成goto没区别 。

        但是在C语言中有区别,两者底层实现不同:

while(1)在编译后:

    mov eax,1

    test eax,eax

    je foo+23h

    jmp foo+18h

for(;;)在编译后:

    jmp foo+23h

        for(;;)在c语言中指令较少,也能够节省内存,没有判断跳转,是比while(1)更好的无限循环。

 

 

 

参考链接: https://blog.csdn.net/Message_lx/article/details/81075688https://www.sohu.com/a/240751118_100109711

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!