我有一个 Java Swing 应用程序。我想将信息上传到 Web 端点,该过程需要足够的时间来证明将工作转移到另一个线程是合理的。我想使用 Swing SwingWorker 范例来做到这一点。我对应该在哪里扩展 SwingWorker 感到困惑。
现在,我为每个 Web 端点都有一个类,该类存储发往该端点的所有数据,以及与端点交互所需的代码(位于名为 upload() 的方法下)。这些类是否应该实现 SwingWorker,因为它需要执行其任务的所有数据都在那里?或者我应该有一个辅助类 FooWorker 实现 SwingWorker,它将从内部 Site 对象调用 Upload()?
如果我创建了一个辅助 FooWorker 类,那么似乎我必须费力地将对站点的引用填充到我实例化的每个 FooWorker 对象中(每个 Web 端点一个线程/工作者),但站点不会被一堆 SwingWorker 方法和代码污染。
如果我使用 Site 类扩展 SwingWorker,那么我可以直接从每个站点的 EDT 调用 .execute() ,这对我来说比为每个站点创建一个工作人员,然后让该工作人员调用 upload()离开网站。
只是寻找关于哪种方法更好的意见和想法。Site 类已经相当复杂,如果我扩展 SwingWorker 类,我怕会在其中放入一堆与领域无关的东西。但是 FooWorker 类,如果我走那条路,基本上只是对 Site 类的一个薄包装。这个包装器是否值得让 Site 类只关注它自己的域方法/数据?