5

我的扩展 SwingWorker 类执行一个可能会重复发生的后台任务,该任务需要源自 GUI 的输入变量。

我看到 2 个编码选项:

  1. 每次我使用它时都启动一个新的类实例并将变量传递给构造函数。我想我应该确保没有太多实例。如果有怎么办?多吨或其他方法?

  2. 更新变量并再次调用执行?如果是这样,我如何确保我没有打扰?

这些选择之一是要走的路还是有更好的方法?

4

2 回答 2

5

SwingWorker 是非进入的,这意味着你不能再次执行它,就像线程一样。

来自 JavaDocs

SwingWorker 仅设计为执行一次。多次执行 SwingWorker 不会导致调用 doInBackground 方法两次。

于 2013-01-23T08:36:17.833 回答
3

请使用选项 1。

不可变对象通常更容易使用。例如,您可以防止在工作人员仍在工作时更新变量的问题,并且您不必考虑内存可见性。

对象实例化在 Java 中相当便宜,所以这不会是性能问题,您可以在每次需要时创建一个新实例。

于 2013-01-23T08:27:17.213 回答