2010-12-11 52 views
4

我剛剛在一些代碼中遇到了這個問題,而且我很困惑。Java Swing定時器的負延遲

timer = new Timer(-10, new 
     ActionListener() 
     { 
      //Do some stuff 
     }); 

擺動Timer對象中的負(或零)延遲的意義是什麼?根據API,第一個事件立即被解僱,但是,-10和負-100之間的區別是什麼?在我的代碼中,它們看起來功能不同,但我無法完全確定它對Timer對象所做的更改。

回答

5

javadoc說:「如果延遲小於或等於零,定時器會在啓動後立即觸發。」

所以答案是沒有區別。您看到的明顯差異可能僅僅是您的應用程序和/或運行時系統中的非確定性的後果。

隨訪

所以後來是每個後續事件前一後,立即解僱以及與任何明顯的「時滯」系統只是產品?

延遲可能只是因爲線程切換非確定性,以及Swing Timer使用一個線程執行所有計時器的事件偵聽器的事實。

您應該可以閱讀關於java.swing.Timerjava.util.Timer的javadoc以及它們鏈接的其他文檔。

+0

這很有道理。那麼,是不是每個後續事件都會在它之前立即被觸發,而任何明顯的「延遲」只是系統的產物? – chimeracoder 2010-12-11 03:54:21