2013-01-23 28 views
5

我的扩展SwingWorker类执行一个潜在的重复后台任务,它需要GUI始发输入变量。每当我想调用doInBackground()时,是否应该创建Java SwingWorker的新实例?

我看到2个编码选项:

  1. 要每次使用它的时候开始的类的新实例,并通过 变量来构造。我认为我应该确保 不是很多情况。如果是这样如何?多重或其他方法?

  2. 更新变量并再次执行?如果是这样,我该如何让 确定我不打扰?

是这些选择之一还是有更好的方法吗?

+0

这是什么问题多线程rellated,也许可能是潜在的答案重要 – mKorbel

+1

SwingWorker类是不可重入,也就是说,你不能再执行它 – MadProgrammer

回答

3

使用选项1.

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

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

+0

谢谢,我会在5分钟批准时,我允许。我如何衡量这种便宜? –

5

SwingWorker是非入门的,这意味着你不能再次执行它,这与线程的方式很相似。

从的JavaDoc

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

相关问题