2014-01-22 34 views
1

這兩者之間的區別是什麼?它們是如何起作用的?擺動定時器vs利用定時器

我寫了一個基本程序,當你按下箭頭鍵和使用java.util.Timer定時器時,它會移動一個圓圈。eclipse想要刪除參數,但使用javax.swing.Timer,它工作得很好。

你不能同時導入兩個計時器,這是否意味着它們基本上是一樣的東西,但使用它們的不同方式?

+0

如果你真的想要,你可以在同一個文件中使用它們,只是指它們的全名(即'java.util.Timer') –

回答

3

主要區別在於Swing計時器確保事件發生在事件調度線程上。 Swing中的線程安全性至關重要。請參閱How to Use Swing Timers。而從該教程有關java.util.Timer相關的報價,

...你可以使用一個通用定時器,如果你不上觸摸 的GUI從定時器計劃,或需要進行長時間的處理。

+0

因此Swing timer只是更平滑,更安全和更準確? – ImGone98

+0

@ ImGone98,沒有(*好吧,從技術上講它更安全*),它確保無論你在定時器中做什麼UI的東西都發生在EDT中。 – mre

+0

'在swing中,我們建議使用Swing定時器而不是通用定時器來執行與GUI相關的任務,因爲Swing定時器都共享相同的預先存在的定時器線程,並且與GUI相關的任務將自動在事件分派線程上執行。但是,如果您不打算從定時器中觸摸GUI,或者需要執行冗長的處理,則可以使用通用定時器。 – nachokk