//給holder中持有的控制項 賦值
music m=getitem(position);
holder.tvname.settext(m.getname());
holder.tvauthor.settext(m.getauthor());
holder.tvduration.settext(m.getdurationtime());
holder.tvsinger.settext(m.getsinger());
holder.ivalbum.settag(position);
//向任務集合中新增任務
imageloadtask task=new imageloadtask();
task.path=m.getalbumpic();//儲存路徑
task.position=position;
tasks.add(task);
//喚醒工作執行緒workthread 起來幹活
synchronized (workthread)
return convertview;
}class imageloadtask
class viewholder
workthread=new thread()else catch (interruptedexception e) }}
}}
};
執行緒開始的時候就檢視緩衝區,如果非空,則去除,並且獲得,作為通過message傳遞給主線程,如果沒有任務,則等待
//向任務集合中新增任務
imageloadtask task=new imageloadtask();
task.path=m.getalbumpic();//儲存路徑
task.position=position;
tasks.add(task);
//喚醒工作執行緒workthread 起來幹活
synchronized (workthread) {
workthread.notify();
這是針對緩衝區的操作,很好理解,存入緩衝區,喚醒執行緒。imageloadtask型別中儲存了的路徑,當前view的position和最後獲得的資料,(有另外的方式,可以把position換為imageview,這樣可以不用再次定位)。
- 補充部分:mainactivity activity =(mainactivity)context;activity.updatelistview(musics);更新view的**
生產者消費者 生產者與消費者模式
一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...
生產者 消費者例項
package com.rx.thread.produce.consume public class product public void setid string id public product string id public string tostring public static v...
生產者 消費者模式
一 我哥們把資料存入redis快取區 生產者 二 我從緩衝器取資料,並作處理!消費者 詳細 如下 取訂單並判斷 redis new redis conn flag redis connect redis translate usefull host,redis translate usefull p...