线程安全的单例模式
单位模式一般写法如下:
public static FestivalLab mInstance;
private FestivalLab() {
}
public static FestivalLab getInstance() {
if (mInstance == null) {
mInstance = new FestivalLab();
}
return mInstance;
}
这样写不是线程安全的,因为如果两个线程都进入到这里,会实例化两次。那么如何优化呢?
线程安全的单例模式:
public static FestivalLab mInstance;
private FestivalLab() {
}
public static FestivalLab getInstance() {
if (mInstance == null) {
synchronized (FestivalLab.class) {
if (mInstance == null) {
mInstance = new FestivalLab();
}
}
}
return mInstance;
}
这里用 synchronized 来进行锁定,同一时间只让一个线程进行实例化操作。
Adapter注意事项之引用传值
Adapter中经常会用到集合数据,先在Activity中获取集合数据,然后传给Adapter中构造适配器。
这里有一个特别需要注意的地方,就是java中集合数据是引用的方式传递的,如果在传给Adapter时数据不进行复制,在Activity中改变了集合数据(本意并不想改变Adapter中的数据),Adapter中的数据源也发生了变化,导致意想不到的错误(如索引越界)。
如果是这种情况,就要进行数据复制,示例如下:
private List<Festival> mFestivals = new ArrayList<>();
mFestivals.add(...);
public List<Festival> getFestivals() {
return new ArrayList<>(mFestivals);
}
点击查看更多内容
7人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦