Rub*_*uck 5 java swing multithreading
我的扩展SwingWorker类执行可能重复发生的后台任务,该任务需要GUI发起输入变量.
我看到2个编码选项:
每次使用它时都要启动类的新实例并将变量传递给构造函数.我认为我应该确保没有很多情况.如果是这样的话?multiton或其他一些方法?
更新变量并再次调用execute?如果是这样,我如何确保我不打扰?
这些选项中的一种是可行的方式还是有更好的方法?
SwingWorker是非参与者,意味着你不能再次执行它,就像Threads一样.
来自JavaDocs
SwingWorker仅设计为执行一次.多次执行SwingWorker不会导致两次调用doInBackground方法.
请使用选项 1。
不可变对象通常更容易使用。例如,您可以防止在工作人员仍在工作时更新变量的问题,并且您必须少考虑内存可见性。
Java 中的对象实例化非常便宜,因此这不会成为性能问题,并且每次需要时都可以创建一个新实例。