美文网首页
for{;;}与while(true)的困惑

for{;;}与while(true)的困惑

作者: DarkCoder | 来源:发表于2020-08-09 17:09 被阅读0次

最近在阅读JUC源码的时候,由于多线程并发时情况比较复杂,所以源码中经常出现一些无限循环用于等待确保或是某些目的的完成,通常我一般无限循环都是用while(true),但是我发现在concurrent包中经常用for(;;)来实现。这让我产生了困惑,难道for(;;)会比while(true)性能更好一些吗?于是我决定自己分别编译比较一下。
我编写了如下的程序:

public class Test2 {
    public void whileTest() {
        int i = 0;
        while (true) {
            i++;
        }
    }

    public void forTest() {
        int i = 0;
        for (; ; ) {
            i++;
        }
    }
}

通过IDEA的jclasslib插件查看到的字节码如下:


while for

观察可以发现他们的字节码是一模一样的,所以这两种无限循环的实现方式在Java中其实是没有任何却别的,所以在源码中大量出现的for(;;)可能只是Doung Lea 先生的个人代码习惯。因此想用何种方式实现就全看个人喜好吧。

注:但在某些语言中这两者可能是有区别的:在c语言中for(;;)指令较少,没有判断跳转,更能够节省内存

相关文章

  • for{;;}与while(true)的困惑

    最近在阅读JUC源码的时候,由于多线程并发时情况比较复杂,所以源码中经常出现一些无限循环用于等待确保或是某些目的的...

  • for(;;) 与 while(true)

    总结 for(;;) 比 while(true) 好 为啥:如下(底层完全不同) “死循环”有两种写法:for(;...

  • 解析Python3 中while true与 whlie 的区别

    最近会思考一个问题:python3 中 while 与 while true 有啥不区别 ? while True...

  • for(;;)与while(true)区别

    前言   在Java中 for(;;)和while(true)都是死循环,使用的效果都是一样的,但是我们都知道Ja...

  • 09流程控制

    if else for 循环 while 语句 util与while相反,条件返回true时跳出 case 跳出循...

  • while 循环

    1、while 循环while True:print("我喜欢Python")注意:关键词True、False 要...

  • Java 里的 for (;;) 与 while (true),

    在JDK8u的jdk项目下做个很粗略的搜索: 并没有差多少。 其次,for (;;) 在Java中的来源。个人看法...

  • Java 里的 for (;;) 与 while (true),

    在JDK8u的jdk项目下做个很粗略的搜索: 并没有差多少 其次,for (;;) 在Java中的来源。个人看法是...

  • while(true) vs for(;;)

    while(true)和for(;;)到底谁快?test code 字节码执行命令:javap -verbose ...

  • While true: learn()

    专家系统:识别text决策树:SIFT(scale-invariant feature transform)per...

网友评论

      本文标题:for{;;}与while(true)的困惑

      本文链接:https://www.haomeiwen.com/subject/yjezvxtx.html