我的扩展SwingWorker类执行一个潜在的重复后台任务,它需要GUI始发输入变量。每当我想调用doInBackground()时,是否应该创建Java SwingWorker的新实例?
我看到2个编码选项:
要每次使用它的时候开始的类的新实例,并通过 变量来构造。我认为我应该确保 不是很多情况。如果是这样如何?多重或其他方法?
更新变量并再次执行?如果是这样,我该如何让 确定我不打扰?
是这些选择之一还是有更好的方法吗?
我的扩展SwingWorker类执行一个潜在的重复后台任务,它需要GUI始发输入变量。每当我想调用doInBackground()时,是否应该创建Java SwingWorker的新实例?
我看到2个编码选项:
要每次使用它的时候开始的类的新实例,并通过 变量来构造。我认为我应该确保 不是很多情况。如果是这样如何?多重或其他方法?
更新变量并再次执行?如果是这样,我该如何让 确定我不打扰?
是这些选择之一还是有更好的方法吗?
使用选项1.
不可变对象通常更容易使用。例如,您可以防止在工作人员仍在工作时更新变量的问题,并且您不得不少思考内存可见性。
对象实例化在Java中相当便宜,所以这不会是性能问题,您可以每次创建一个新实例来需要它。
谢谢,我会在5分钟批准时,我允许。我如何衡量这种便宜? –
SwingWorker是非入门的,这意味着你不能再次执行它,这与线程的方式很相似。
从的JavaDoc
的SwingWorker仅设计用于执行一次。多次执行一个 SwingWorker不会导致两次调用doInBackground方法 。
这是什么问题多线程rellated,也许可能是潜在的答案重要 – mKorbel
SwingWorker类是不可重入,也就是说,你不能再执行它 – MadProgrammer