2013-11-22 37 views
0

錯誤消息是java.lang.IllegalThreadStateException(在行timeOutControl.start())。可能是什麼原因?計時器錯誤java.lang.IllegalThreadStateException

TimeOutControl timeOutControl = new TimeOutControl(); 

//... 

timeOutControl.start(); 

    public class TimeOutControl extends Thread { 

    public void run() 
    { 
     long start = System.currentTimeMillis(); 

     while (CVRPTW.DO_IT) { 
      if (System.currentTimeMillis() - start > CVRPTW.maxruntime) { 
       CVRPTW.DO_IT = false; 
       break; 
      } 

      try { 
       sleep(10000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 

     } 

    } 

} 
+1

向我們展示'TimeOutControl'的代碼。這裏沒有足夠的信息。 –

+0

似乎對'start()'的調用在您的代碼中執行了兩次。 –

+0

timecontrol.start()引發異常。提供該部分的代碼。 – Adarsh

回答

3

The javadoc爲Thread.start()說:

拋出: IllegalThreadStateException - 如果線程已經啓動。

所以,答案是你試圖兩次啓動同一個線程。如果你必須這樣做,那麼每次你想啓動它時都要構造一個TimeOutControl的新實例。