生產者消費者模式及乙個例項

2021-07-09 08:08:51 字數 2136 閱讀 8324

//給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...