我已阅读有关后台线程(或工作线程)的教程,现在我对SwingWorker和守护进程线程感到困惑,它们是否相同?如果我正在编写非GUI应用程序,我应该创建SwingWorker或守护程序线程,因为它们都在后台完成工作吗?
答案 0 :(得分:1)
Thread
有两种类型:守护进程和非守护进程。当所有非守护进程Thread
停止运行时,JVM将停止执行。
SwingWorker
是一个实用程序,用于从事件调度线程异步执行一些时间昂贵的任务,以防止GUI无响应。 SwingWorker
不是Thread
,而是Runnable
任务可以汇总到Thread
执行。
如果您没有使用GUI执行任何操作,请使用Thread
。如果您需要在GUI的单独Thread
上执行操作,请使用SwingWorker
。
答案 1 :(得分:0)
SwingWorker是一个专门的类,可以简化与用户界面的交互。只能从特殊的gui线程访问gui组件。 SwingWorker的方法done
保证在gui线程中执行,因此您可以安全地更新ui。
如果你不与swing ui交互,你应该使用简单的线程。此外,如果您需要一些线程,那么查看ExecutorService
是一个线程池。