2010-07-05 142 views
6

我在Java(1.5)+ Swing中做了一些例程,這需要一些時間。如何在擺動線程外部實現此路由的最佳方式,以避免UI凍結?Java Swing - UI凍結

在此先感謝

+1

這可以幫助:http://stackoverflow.com/questions/2564388/javas-swing-線程 – 2010-07-05 22:01:13

+0

其實這個鏈接也比我的回答好得多... – 2010-07-05 22:04:24

+0

是的,我已經發布了一個答案,這個鏈接,但它現在只是無用:) – 2010-07-05 22:06:46

回答

7

乍一看,看SwingWorker類。當你想讓代碼更加健壯和可測試時,你可能想要擺脫這種情況,但這是一個足夠好的開始。

您可以獲得Java 1.5的一個版本here。 1.6版本是標準API的一部分。

+0

我從來沒有使用JDK實現,但它似乎被竊聽,請參閱http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6880336 – 2010-07-05 22:27:11

+1

@Sylvain該錯誤被標記爲適用於1.7,不是1.6。 – Ash 2010-07-05 22:46:36

+1

@Ash,這適用於1.6u18,而不僅僅是1.7 – Yishai 2010-07-06 01:42:39

3

使用SwingWorker當然是好主意,我建議。還編寫自定義javax.swing.Timer s和java.lang.Thread s。

但是別忘了使用profiler - 它可以幫助您找到許多問題。像Swing經常遇到「死」聽衆有一些引用不能被垃圾收集(導致響應非常緩慢或UI凍結,甚至內存泄漏)。 Profiler將幫助您在使用應用程序時調查特定情況下的內存需求,因此您可以對應用程序進行微調。