生產者 消費者模式

2021-08-18 13:08:38 字數 1073 閱讀 2612

-是為了更好處理併發程式設計中程序同步問題。解決生產速率和消費速率不匹配的問題,如果不使用生產者消費者模式,生產速度過快,而消費者處理速度過慢,則必須等待消費者處理完才能繼續生產;同樣如果消費者處理速度大於生產者處理速度,那麼消費者必須等待生產者生產了才能繼續處理。而生產者-消費者模式通過引入乙個生產者與消費者公用的緩衝區可以解決這個問題,大大提高了處理速率。

-所謂生產者-消費者問題,可以抽象成:一組生產者向一組消費者提供產品,生產者與消費者共享乙個有界緩衝池,生產者向其中投放產品,消費者從中取出產品消費。其中所謂消費者是指使用某一軟硬體資源的程序,而生產者是指提供(釋放)某一軟硬體資源的程序。

下面是一段沒有使用生產者-消費者模式的**:

public class product  catch (interruptedexception e) 

}else catch (interruptedexception e)

count++; // 模擬生產

system.out.println(threadname+"生產了產品,目前商品總量:"+count);

notifyall(); // 每生產乙個商品,則通知(喚醒)所有等待著的消費者執行緒}}

// 消費商品

public synchronized void buyproduct() catch (interruptedexception e)

}else catch (interruptedexception e)

count--; // 模擬買商品

system.out.println(threadname+"買了乙個商品,當前還剩餘商品數量:"+count);}}

}public class consumer implements runnable

@override

public void run()

}}public class producer implements runnable

@override

public void run() }}

public class test

}

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

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

生產者 消費者模式

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

生產者消費者模式

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