假设我有一个执行简单文件写入操作的Runnable,并且使用执行程序调用此Runnable。
执行程序是一个单线程Executor类..
public void doThis() {
executor.execute(new Runnable() {
@Override
public void run() {
file.write(_data);
}
});
}
在调用execute()的那一刻,_data的直接内容会被保存吗?这意味着一旦runnable被提交到队列,我可以继续对_data进行更改,并且更改不会写入文件?
_data = something
doThis();
_data = something else
我有可能最终做file.write(其他的东西)吗?
答案 0 :(得分:1)
解决这个问题的常用方法是在将_data传递给执行者之前简单地制作一份_data。