2011-01-25 42 views
1

我正在寫一個小應用程序,由gui和幾個按鈕組成。當用戶點擊其中的一個時,程序必須下載一個網頁,進行一對匹配並向gui返回一個值。 問題是,每當用戶點擊該按鈕時,我必須啓動一個新線程,或者有一種線程替代這些小任務(主要是從網上下載內容)?替代線程的小任務不凍結的GUI

+0

您是否需要爲每個按鈕按下一個單獨的線程,或者您可以只使用一個線程與隊列來管理所有這些事件? – 2011-01-25 18:25:05

回答

3

你總是需要使用不同的線程。現在你如何使用這些不同的線程取決於你。查看producer/consumer方法,其中只有一個空閒線程坐在後臺等待工作排隊。這似乎很適合你的工作。在可能的情況下,您還應該使用SwingWorker,因爲它有助於進行大量GUI更新和刷新。最後,看看java.concurrency包,因爲它非常有用。現在,我認爲沒有任何理由要手動啓動一個線程,而不使用某些爲您執行所有鎖定和線程的庫。

0

如果您希望該調用是異步的,那就別無選擇。

但是,如果您可以讓您的用戶等待下載完成並處理完畢,則不需要線程。