群里面有小伙伴提了个问题,说在看并发源码的时候,很多时候源码中都使用for(;;)而不是使用while(true),这两个有什么区别吗?
这种问题,在java里面,最简单有效的办法就是打印字节码看一下,javap再次华丽丽的登场:
字节码一模一样,能有啥区别?因此,在java里面,就看个人的爱好了,二者没区别!
更过关于java字节码的内容可以观看我的一个视频课程:Java生产环境下性能监控与调优详解
为啥网上有的文章说二者有区别呢?因为那是在C语言中!
在C语言中, while(1)在编译后:
mov eax,1 test eax,eax je foo+23h jmp foo+18h
for(;;)在编译后:
mp foo+23h
这里的区别就非常明显了,for(;;)在c语言中指令较少,也能够节省内存,没有判断跳转,是比while(1)更好的无限循环。
C编译后的指令参考:https://blog.csdn.net/baidu_29029173/article/details/51175799
最后,欢迎大家观看我的两个视频课程:
點擊查看更多內容
3人點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優(yōu)質文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦