【发布时间】:2021-01-16 02:32:22
【问题描述】:
我真的很喜欢javax.swing.SwingWorker,它是一种处理多线程的简单方法。
现在我有一个没有任何 GUI 的服务器应用程序,我想使用 SwingWorker 之类的东西,以及 process()、done()、cancel() 等...方法。
我知道我可以只使用 swing worker 并且可能没有问题,但是 swing worker 显然还是打算与 swing-application 一起使用。
那么,有没有类似 swing worker 的东西打算用于更一般的情况,但几乎都是一样的?
如果不是这样,使用 Swing 工作者而不使用 Swing 有什么缺点?
我想到的是糟糕的代码风格和 done() 和 process() - 在 EDT 中执行的方法。
【问题讨论】:
-
如果你不使用 Swing,你就没有 EDT(好吧,至少 Swing 的 EDT,你可能有 一个 Event Dispatch Thread,但那将是那么别的东西)。您不需要在 Swing 之外使用
SwingWorker,因为它的主要实用程序在使用 Swing 时很有帮助。我建议阅读更多here。 -
IMO SwingWorker 并不是关于处理多线程的。 IMO,它更多的是关于将长动作与 GUI 处理 (EDT) 分离。它允许您启动批处理作业并在批处理作业完成时呈现 GUI。在您的情况下,GUI 渲染的等价物是什么? docs.oracle.com/javase/7/docs/api/java/util/concurrent/… 会是什么开始吗?
标签: java multithreading swing swingworker