伪代码:
final MyClass object = new MyClass();
workWith(object); // which may modify states of object
SwingWorker<MyClass, Object> sw = new SwingWorker<MyClass, Object>() {
@Override
public MyClass doInBackground() {
modify(object);
return object;
}
};
sw.execute();
MyClass object2 = sw.get();
起初我认为它应该是安全的,因为SwingWorker在对象之后被实例化。但是,在我仔细研究之后,似乎SwingWorker使用了现有线程池中的线程,这意味着在创建对象之前该线程可能已经存在。
问题:在伪代码中修改 对象 是否安全?如果不是,是否有一种简单的方法可以修改工作线程中的 object ,然后将其返回给主线程?
或者换句话说:是否以某种方式保证在初始化SwingWorker之前创建的所有对象都能在工作线程中正确显示?
谢谢!