我的扩展SwingWorker类执行可能重复发生的后台任务,该任务需要GUI发起输入变量。
我看到2个编码选项:
每次使用它并传递时,要启动该类的新实例 构造函数的变量。我认为我应该确定那里 不是很多情况。如果是这样的话? multiton或其他一些方法?
更新变量并再次调用execute?如果是这样我该怎么做 我确定不打扰?
这些选项中的一种是可行的方式还是有更好的方法?
答案 0 :(得分:5)
SwingWorker是非参与者,这意味着你不能再次执行它了,就像线程一样。
来自JavaDocs
SwingWorker只能执行一次。执行一个 SwingWorker不止一次不会导致调用 doInBackground方法两次。
答案 1 :(得分:3)
使用选项1。
不可变对象通常更容易使用。例如,您可以防止在工作人员仍在工作时更新变量的问题,并且您必须更少考虑内存可见性。
对象实例化在Java中非常便宜,因此这不会是性能问题,您可以在每次需要时创建一个新实例。