2011-01-25 43 views
1

我正在写一个小应用程序,由gui和几个按钮组成。当用户点击其中的一个时,程序必须下载一个网页,进行一对匹配并向gui返回一个值。 问题是,每当用户点击该按钮时,我必须启动一个新线程,或者有一种线程替代这些小任务(主要是从网上下载内容)?替代线程的小任务不冻结的GUI

+0

您是否需要为每个按钮按下一个单独的线程,或者您可以只使用一个线程与队列来管理所有这些事件? – 2011-01-25 18:25:05

回答

3

你总是需要使用不同的线程。现在你如何使用这些不同的线程取决于你。查看producer/consumer方法,其中只有一个空闲线程坐在后台等待工作排队。这似乎很适合你的工作。在可能的情况下,您还应该使用SwingWorker,因为它有助于进行大量GUI更新和刷新。最后,看看java.concurrency包,因为它非常有用。现在,我认为没有任何理由要手动启动一个线程,而不使用某些为您执行所有锁定和线程的库。

0

如果您希望该调用是异步的,那就别无选择。

但是,如果您可以让您的用户等待下载完成并处理完毕,则不需要线程。