剛在看多執行緒通訊的時候用到了判斷,發現while和if還是有區別的,以前想當然認為都是判斷條件的,
while迴圈語句,可以執行多次,if是條件語句,只是單次執行。
while(表示式) 語句組; 計算表示式,若為真,執行語句,並重複該過程,直到為假時,執行下一條語句。
例如:while(k>0)i++;表示只要k>0,就執行i++;直到等到k<=0時,不執行i++;程式執行下面的語句。
比如多執行緒中的語句:
while(flag)
trycatch(exception e){}//t1(放棄資格) t2(獲取資格)
this.name = name+"--"+count++;
如果這裡的while換成if,將會出現錯誤,因為t2等待後被喚醒,如果是if,經過單次判斷後不會再進行判斷,這時t2有可能會覆蓋掉t1的結果,而while會多次執行,避免出現覆蓋。
而且 當開啟三個這樣的執行緒列印不同的語句用if每個列印一遍也就全部wait了但是你用while會一直執行
private int flag=1;
public void print() throws interruptedexception
system.out.print("你");
system.out.print("黑");
system.out.print("\r\n");
flag=2;
this.notify();//}}
當然了你可以吧notify換成notifyall但是依然達不到三個執行緒乙個接乙個執行的效果,
while和if的區別
while用於迴圈語句,而if用於判斷和分支語句。由於你並沒有指明是什麼程式,只能泛泛而談了。if 語句中,常用格式為 if 判斷條件 上面的結構,只是進行一次判斷。if與else結合,就可形成乙個分支結構的語句,形如 if 判斷條件1 else if 判斷條件2 else if 判斷條件3 els...
while和if的區別
最近在自我學習中,在乙個案例中發現while條件和if條件還是有一些區別的,之前一直以為是相同的,這是乙個很大的誤區 while語句屬於迴圈語句,在判斷是,如果條件為true,則會繼續判斷,直到false為止,即會進行多次判斷 除非一開始條件就是錯的 if語句屬於條件判斷語句,如果條件是true,則...
while和if的區別
while用於迴圈語句,而if用於判斷和分支語句。由於你並沒有指明是什麼程式,只能泛泛而談了。if 語句中,常用格式為 if 判斷條件 上面的結構,只是進行一次判斷。if與else結合,就可形成乙個分支結構的語句,形如 if 判斷條件1 else if 判斷條件2 else if 判斷條件3 els...