java死迴圈while(true)vsfor(;;)
今天在看AtomicInteger的樂觀鎖實現(CAS);讀原始碼發現它的死迴圈式是這麼寫的
/**
* Atomically decrements by one the current value.
*
* @return the previous value
*/
public final int getAndDecrement() {
for (;;) {
int current = get();
int next = current - 1;
if (compareAndSet(current, next))
return current;
}
}
採用的是for(;;) 而我常用的習慣是用while(true),這兩者有什麼區別呢。是不是for(;;)要比while(true)快呢?
做了如下測試
/**
* MainTest
*
* @author lilin
* @date 16/12/1
*/
public class MainTest {
public static void main(String[] args) {
forTest();
whileTest();
}
public static void forTest(){
for(;;){
System.out.println("for");
}
}
public static void whileTest(){
while (true){
System.out.println("while");
}
}
}
**編譯 javac -p src/main/java/classes src/main/java/MainTest.java
編譯後的檔案MainTest.class 程式碼如下**
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
public class MainTest {
public MainTest() {
}
public static void main(String[] var0) {
forTest();
whileTest();
}
public static void forTest() {
while(true) {
System.out.println("for");
}
}
public static void whileTest() {
while(true) {
System.out.println("while");
}
}
}
發現最後都變成了while(true) 得出的結論他們最終的效果應該是一樣的 。
相關文章
- Java 迴圈 - for, while 及 do…whileJavaWhile
- while迴圈以及do while迴圈While
- Java迴圈結構-for,while及do…whileJavaWhile
- Java while和do while迴圈詳解JavaWhile
- C語言——迴圈結構(for迴圈,while迴圈,do-while迴圈)C語言While
- Java 迴圈結構 - for, while 及 do...whileJavaWhile
- while迴圈While
- java學習之while迴圈JavaWhile
- PHP For & While 迴圈PHPWhile
- 04流程控制 for迴圈,while迴圈While
- 無限for迴圈(死迴圈)
- while + else 使用,while死迴圈與while的巢狀,for迴圈基本使用,range關鍵字,for的迴圈補充(break、continue、else) ,for迴圈的巢狀,基本資料型別及內建方法While巢狀資料型別
- Java入門學習-學習if & else,for迴圈,foreach迴圈,while迴圈的用法。JavaWhile
- Java基礎 迴圈語句 for while do.....while語句JavaWhile
- python while迴圈PythonWhile
- linux while 迴圈LinuxWhile
- while迴圈補充While
- JavaScript中的while迴圈JavaScriptWhile
- python-while迴圈PythonWhile
- C語言程式設計學習中while迴圈和do……while迴圈C語言程式設計While
- Java之for(;;)和while(true)的區別JavaWhile
- c#入門-while迴圈C#While
- mysql 中 while 迴圈的用法。MySqlWhile
- C#程式設計基礎第七課:C#中的基本迴圈語句:while迴圈、do-while迴圈、for迴圈、foreach迴圈的使用C#程式設計While
- Object-C,迴圈語句for,while,do-whileObjectWhile
- python04: while迴圈語句 break continue for in 迴圈PythonWhile
- python 基礎習題6--for迴圈和while迴圈PythonWhile
- while迴圈和do迴圈、緩衝區、一維陣列While陣列
- C#練習,應用for,while,do-while迴圈C#While
- web前端開發教程-while迴圈Web前端While
- 15-python之while迴圈PythonWhile
- python_while truePythonWhile
- shell死迴圈指令碼示例指令碼
- HashMap死迴圈的原因分析HashMap
- ruby 怪異的while迴圈處理,和java的差別WhileJava
- 探討兩種迴圈表示方法的區別,while迴圈與for迴圈的小總結While
- Python基礎-While迴圈語句PythonWhile
- Python學習-while迴圈練習PythonWhile