伊莉討論區

標題: timer問題 [打印本頁]

作者: cm101115    時間: 2016-7-11 02:30 PM     標題: timer問題

以下是程式碼
public class MyTimerII {   
    int j=0,i=0;
   MyTimerII(){     
    mytime.start();
    while(j!=1)
    {
     i++;
     System.out.println("i="+i+",j="+j);
    }
    System.out.print("end");
    System.exit(0);     
    }
    Timer mytime =new Timer(1,new  ActionListener(){  
                                                            
              public  void  actionPerformed(ActionEvent e)
              {               
                         j+=1;                                                
              }
                     });
   
    public static void main(String[] args) {      
       MyTimerII m=new MyTimerII();
    }  
}不知為何,有時j會直接跳到2,然後就直接無窮了?

作者: kwj    時間: 2016-7-15 10:16 AM

使用 Timer 時,系統會建立出另一個 Thread 去執行 Timer 內的動作
所以跟 main() 會是兩個不同的 Thread

在不同 Thread 之間執行時,無法預期程式的執行順序
每次執行時順序也不會完全相同(因為這跟 CPU 等其他很多事情的運作有關)
作者: jackyo04    時間: 2018-7-6 04:43 PM

你可以試著將時間顯示出來,然後執行程式,並在開啟另外一個吃效能的程式,你就可以理解為何會突然跳到2了




歡迎光臨 伊莉討論區 (http://a04.eyny.com/) Powered by Discuz!