生產者 消費者模式實現

2021-08-17 16:23:41 字數 1298 閱讀 3241

生產者是指:生產資料的執行緒

消費者是指:使用資料的執行緒

生產者和消費者是不同的執行緒,他們處理資料的速度是不一樣的,一般在二者之間還要加個

「橋梁參與者

」,用於緩衝二者之間處理資料的速度差。

下面用**來說明:

//生產者 public class makerthread extends thread   

public void run()   

} catch (interruptedexception e)   

}  private static synchronized int nextid()   

}  再來看看消費者:

//消費者執行緒

public classeaterthread extends thread

public void run()

} catch (interruptedexception e)

} }

看來在這個模式裡

table

是個很重要的角色啊,讓我們來看看他吧(這裡只給出個簡單的):

public class table   

// 放置資料

public synchronized void put(string cake) throws interruptedexception   

buffer[tail] = cake;  

tail = (tail + 1) % buffer.length;  

count++;  

notifyall();//

有資料了,喚醒執行緒去取資料

}  // 

取得資料

public synchronized string take() throws interruptedexception   

string cake = buffer[head];  

head = (head + 1) % buffer.length;  

count--;  

notifyall();//

有位置可以放資料了,喚醒執行緒,不等了

system.out.println(thread.currentthread().getname() + " takes " + cake);  

return cake;  

}  }

好了我們來實驗吧:

生產者消費者 生產者與消費者模式

一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...

生產者 消費者模式

一 我哥們把資料存入redis快取區 生產者 二 我從緩衝器取資料,並作處理!消費者 詳細 如下 取訂單並判斷 redis new redis conn flag redis connect redis translate usefull host,redis translate usefull p...

生產者消費者模式

常見場景 某個模組負責產生資料,這些資料由另乙個模組來負責處理。產生資料的模組,就形象地稱為生產者 而處理資料的模組,就稱為消費者。該模式還需要有乙個緩衝區處於生產者和消費者之間,作為乙個中介。生產者把資料放入緩衝區,而消費者從緩衝區取出資料 緩衝區作用 1.解耦,生產者和消費者只依賴緩衝區,而不互...