私が次のものを持っているとしましょう:
public class Foo {
private ReadingList mReadingList = new ReadingList();
public ReadingList getReadingList() {
synchronized (mReadingList) {
return mReadingList;
}
}
}
2つのスレッドでReadingListオブジェクトを変更しようとすると、上記の同期は役に立ちませんよね?:
// Thread 1
foo1.getReadingList().setName("aaa");
// Thread 2
foo2.getReadingList().setName("bbb");
同期させたい各メソッドを次のようにラップする必要がありますか?
public class Foo {
private ReadingList mReadingList = new ReadingList();
public synchronized void setReadingListName(String name) {
mReadingList.setName(name);
}
public synchronized void setReadingListAuthor(String author) {
mReadingList.setAuthor(author);
}
...
など、ReadingListの各メソッドについて、公開して同期したいですか?最終的には、ReadingListの各メソッドのラッパーメソッドを作成するだけになります。
ありがとう