我是 synchronized块的新手,仍然不确定这是否如何使用。基本上我在一个辅助线程中解码很多位图,将它们添加到List
,最后将列表设置为一个名为myEntity
的实体对象。
我的问题是,在进行同步时,我应该同步我想要调用方法的对象(即使它是非最终的),还是通用Object
(通常称为lock
}或mLock
?(查看代码以了解我的意思)
PS:myEntity
不是最终字段,因为它已初始化onLoadFinished()
加载程序回调
// Inside AsyncTask subclass
@Override
public void doInBackground() {
List<Picture> list = new ArrayList<Picture>();
Cursor cursor = database.getBitmapPathsForId(id);
do {
list.add(Picture.fromCursor(cursor));
} while(cursor.moveToNext());
// HERE
synchronized (myEntity) {
myEntity.setPictures(list);
}
return null;
}