使用synchronize关键字

时间:2014-05-21 13:24:18

标签: android synchronized loader android-cursor

我是 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;
} 

0 个答案:

没有答案