不変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;
}
}
Model
とインスタンスの両方Task
がメイン UI スレッドで作成されます。ただし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で実行できます。