我已经阅读了有关后台线程(或工作线程)的教程,现在我对 SwingWorker 和守护线程感到困惑,它们是一样的吗?如果我正在编写非 GUI 应用程序,我应该创建 SwingWorker 或守护线程,因为它们都在后台完成工作吗?
问问题
1661 次
2 回答
1
s有两种类型Thread
:守护进程和非守护进程。当所有非守护进程Thread
停止运行时,JVM 将停止执行。
SwingWorker
s 是一个实用程序,用于从事件调度线程异步执行一些耗时的任务,以防止您的 GUI 变得无响应。ASwingWorker
不是 a Thread
,它是一个Runnable
可以提交到 aThread
执行的任务。
如果您不使用 GUI 做任何事情,请使用Thread
. 如果您需要为您的 GUI 单独执行操作Thread
,请使用SwingWorker
.
于 2012-04-26T23:29:03.733 回答
0
SwingWorker 是一个专门的类,可以简化与用户界面的交互。只能从特殊的 gui 线程访问 gui 组件。SwingWorker 具有done
保证在 gui 线程中执行的方法,因此您可以安全地更新 ui。
如果你不与 swing ui 交互,你应该使用简单的 Thread。此外,如果您需要几个线程,最好看看ExecutorService
哪个是线程池。
于 2012-04-26T23:27:16.390 回答