2009-03-28

Tags: 程式語言

SwingWorker是JavaSE6才出現的新class,主要用來扮演Swing程式中的Worker thread角色(Swing程式中用到的Thread可分成三種角色:Initial thread、Event dispatch thread、Worker thread),用來簡化自己寫Worker thread時要注意的各項細節。

SwingWorker的使用方式可以參照下方儿個URL裡的資料,有很仔細的解說。
1. Improve Application Performance With SwingWorker in Java SE 6(原文)
2.Improve Application Performance With SwingWorker in Java SE 6(簡中翻譯)( 其一)( 其二)( 其三)
3. Concurrency in Swing(Sun官方文件)

以使用上來說,它的特定儿個Method有很明確的關聯性。
1.doInBackground()、done()、get() 這三個Method可視為有關聯性的一群Method
2.publish(V... chunks)、process(List chunks)可視為有關聯性的另一群Method

在一般使用中,通常是繼承SwingWoker,然後實作或覆寫doInBackground()、done()、process(List chunks),就可以做出我們想要的功能。要在Event dispatch thread中啟動SwingWoker衍生類別以執行它的任務,必需呼叫SwingWoker類別中的execute() Method。此外...SwingWorker可以與Swing中的各類GUI元件(e.g. JLabel)進行interaction,而不用單心MultiThread程式在沒處理好時會發生的一些問題(e.g. dead lock...etc)

嗯...想要偷懶,不想自己管Swing程式中的Work Thread時,SwingWorker這個class實在是個好物呀...XD