在java的工作者和守护程序螺纹

时间:2012-04-26 23:21:46

标签: java

我已阅读有关后台线程(或工作线程)的教程,现在我对SwingWorker和守护进程线程感到困惑,它们是否相同?如果我正在编写非GUI应用程序,我应该创建SwingWorker或守护程序线程,因为它们都在后台完成工作吗?

2 个答案:

答案 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是一个线程池。