為啥看併發源碼中,經常使用for(;;)而不是使用while(true)?

在看併發源碼的時候,很多時候源碼中都使用for(;;)而不是使用while(true),這兩個有什麼區別嗎? 首先“死循環”有兩種寫法:for(;;)和while(true),在java裡面,最簡單有效的辦法就是打印字節碼看一下


為啥看併發源碼中,經常使用for(;;)而不是使用while(true)?

字節碼一模一樣,能有啥區別?因此,在java裡面,就看個人的愛好了,二者沒區別!
while(1)在編譯後:

for(;;)在編譯後:
mp foo+23h

這裡的區別就非常明顯了,for(;;)在c語言中指令較少,也能夠節省內存,沒有判斷跳轉,是比while(1)更好的無限循環。


分享到:


相關文章: