關鍵是this.wait()和this.notify(),如果是兩個if,則本次set或者print中,所有代碼都會執行一次,也就是每次執行set或者print方法,一個wait一個notify,剛好配對,所以set一次,打印一次
如果用else,則每次方法內wait後被notify喚醒後,不會執行else分支,所以也就不會被print出來。
實際你可以在
while(true)
{
if(flag==0)
{
p.set("mike","man");
}
else
{
p.set("麗麗麗麗","女女女女");
}
System.out.println("flag="+flag); //這裡輸出日志,你就可以看清了,值是有變化的,只是print沒有每次打印。
flag=(flag+1)%2;
}