假设我有一个不可变的Model
类:
class Model {
final String id;
Model(String id) {
this.id = id;
}
}
我有一个自定义Task
类:
class Task extends BlaBlaTask {
final Model model;
Task(Model model) {
this.model = model;
}
// runs on a background thread
void doInBackground() {
// do smth with model, e.g.:
String id = model.id;
}
}
和实例都是在主 UI 线程上创建的Model
。Task
但是doInBackground()
在另一个线程上运行。这段代码错了吗?我应该添加同步,例如这样的:
class Task extends BlaBlaTask {
Model model;
Task(Model model) {
setModel(model);
}
// runs on a background thread
void doInBackground() {
// do smth with model, e.g.:
String id = getModel().id;
}
private synchronized void setModel(Model m) {
model = m;
}
private synchronized Model getModel() {
return model;
}
}
PS 我正在研究 Java 1.4,代码可能可以在多核 CPU 上运行。