亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? producerconsumer.htm

?? 程式設(shè)計(jì)是思維具體化的一種方式
?? HTM
字號(hào):
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>





  
  
  
  
  
  <link rel="stylesheet" href="css/stdlayout.css" type="text/css">





  
  
  
  
  
  <link rel="stylesheet" href="css/print.css" type="text/css">





  
  
  
  
  
  <meta content="text/html; charset=gb2312" http-equiv="content-type">





  
  
  
  
  
  <title>Producer Consumer 模式</title>
</head>


<body>





<h3><a href="http://caterpillar.onlyfun.net/GossipCN/index.html">From
Gossip@caterpillar</a></h3>





<h1><a href="CppGossip.html">Design Pattern:&nbsp;Producer Consumer 模式</a></h1>

Producer Consumer模式與 <a href="GuardedSuspension.htm">Guarded Suspension 模式</a>
是類似的,只不過(guò)Guarded Suspension模式并不限制緩沖區(qū)的長(zhǎng)度,Producer
Consumer模式假設(shè)所生產(chǎn)的產(chǎn)品放置在一個(gè)長(zhǎng)度有限制的緩沖區(qū)(就像是一個(gè)產(chǎn)品桌,它可以擺放的空間是有限的),如果緩沖區(qū)滿了,則生產(chǎn)者必須停止
繼續(xù)將產(chǎn)品放到緩沖區(qū)中,直到消費(fèi)者取走了產(chǎn)品而有了空間,而如果緩沖區(qū)中沒有產(chǎn)品,當(dāng)然消費(fèi)者必須等待,直到有新的產(chǎn)品放到緩沖區(qū)中。 <br>
<br>
一個(gè)簡(jiǎn)單的 UML 順序圖如下所示:<br>
<div style="text-align: center;"><img style="width: 642px; height: 526px;" alt="ProducerConsumer" title="ProducerConsumer" src="images/producerConsumer.jpg"><br>
</div>
簡(jiǎn)單來(lái)說(shuō),Producer Consumer模式就像是加上了雙重防護(hù)與等待的Guarded Suspension模式,而它的兩個(gè)防護(hù)與等待的條件洽好相反,一個(gè)用Java實(shí)現(xiàn)的簡(jiǎn)單流程架構(gòu)如下:<br>
<ul>
  <li>ProductTable.java</li>
</ul>
<pre>import java.util.LinkedList;<br><br>public class ProductTable {<br>    private LinkedList products = new LinkedList();<br><br>    public synchronized void addProduct(Product product) {<br>        while(products.size() &gt;= 2) { // 容量限制為 2<br>            try {<br>                wait();<br>            }<br>            catch(InterruptedException e) {}<br>        }<br><br>        products.addLast(product);<br>        notifyAll();<br>    }<br>   <br>    public synchronized Product getProduct() {<br>        while(products.size() &lt;= 0) {<br>            try {<br>                wait();<br>            }<br>            catch(InterruptedException e) {}<br>        }<br><br>        Product product = (Product) products.removeFirst();<br>        notifyAll();<br>     <br>        return product;<br>    }<br>} </pre>
<br>

以下舉一個(gè)最簡(jiǎn)單的:生產(chǎn)者每次生產(chǎn)一個(gè)整數(shù)并放置在桌子上,而消費(fèi)者消耗整數(shù),桌子上一次只能放置一個(gè)整數(shù),如果桌子上已有整數(shù),則生產(chǎn)者等待消費(fèi)者將
整數(shù)消耗并通知生產(chǎn)者生產(chǎn)下一個(gè)整數(shù),如果桌子上沒有整數(shù),則消費(fèi)者等待生產(chǎn)者生產(chǎn)整數(shù)并通知消費(fèi)者可以消耗整數(shù)。<br>
<ul>
  <li>Producer.java
  </li>
</ul>

<pre>public class Producer extends Thread {<br>    private ProductTable productTable;<br>   <br>    public Producer(ProductTable productTable) {<br>        this.productTable = productTable;<br>    }<br>   <br>    public void run() {<br>        System.out.println("Produce integer......");<br>        for(int product = 1; product &lt;= 10; product++) {<br>            try {<br>                // wait for a random time<br>                Thread.sleep((int) Math.random() * 3000);<br>            }<br>            catch(InterruptedException e) {<br>                e.printStackTrace();<br>            }<br>            productTable.setIntProduct(product);<br>        }      <br>    }<br>} <br></pre>

<br>

<ul>
  <li> Consumer.java
  </li>
</ul>

<pre>public class Consumer extends Thread {<br>    private ProductTable productTable;<br>   <br>    public Consumer(ProductTable productTable) {<br>        this.productTable = productTable;<br>    }<br>   <br>    public void run() {<br>        for(int i = 1; i &lt;= 10; i++) {<br>            try {<br>                // wait for a random time<br>                Thread.sleep((int) (Math.random() * 3000));<br>            }<br>            catch(InterruptedException e) {<br>                e.printStackTrace();<br>            }<br>            productTable.getProductInt();<br>        }<br>    }<br>} <br></pre>

<p></p>

生產(chǎn)者將產(chǎn)品放至桌上,而消費(fèi)者將產(chǎn)品從桌上取走,所以桌子是個(gè)維護(hù)是否讓被放置或消耗產(chǎn)品的地方,由它來(lái)決定誰(shuí)必須等待與通知: 
<ul>
  <li> ProductTable.java
  </li>
</ul>

<pre>public class ProductTable {<br>    private int productInt = -1; // -1 for no product<br><br>    public synchronized void setIntProduct(int product) {<br>        if(productInt != -1) {<br>            try {<br>                wait();<br>            }<br>            catch(InterruptedException e) {<br>                e.printStackTrace();<br>            }<br>        }<br><br>        productInt = product;<br>        System.out.println("set (" + product + ")");<br>        notify();<br>    }<br>   <br>    public synchronized int getProductInt() {<br>        if(productInt == -1) {<br>            try {<br>                wait();<br>            }<br>            catch(InterruptedException e) {<br>                e.printStackTrace();<br>            }<br>        }<br><br>        int p = productInt;<br>        System.out.println("Get (" + productInt + ")");<br>        productInt = -1;<br>              <br>        notify();<br>      <br>        return p;<br>    }<br>} <br></pre>

<br>
生產(chǎn)者會(huì)生產(chǎn)10個(gè)整數(shù),而消費(fèi)者會(huì)消耗10個(gè)整數(shù),由于桌上只能放置一個(gè)整數(shù),所以每生產(chǎn)一個(gè)就消耗一個(gè)。<br>
<br>
<br>





</body>
</html>

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区按摩在线观看| 亚洲天堂免费在线观看视频| 日韩中文欧美在线| 欧美午夜免费电影| 日韩中文字幕区一区有砖一区 | 国产精品一区专区| 久久日韩粉嫩一区二区三区| 久久99日本精品| 国产亚洲欧洲一区高清在线观看| 极品美女销魂一区二区三区| 久久伊99综合婷婷久久伊| 国产91丝袜在线播放| 中文字幕中文字幕一区| 91黄色免费看| 美女尤物国产一区| 亚洲国产精品激情在线观看| gogo大胆日本视频一区| 亚洲国产一区二区视频| 精品日韩在线观看| 91丨porny丨最新| 日韩高清不卡一区| 中文字幕av资源一区| 色视频欧美一区二区三区| 秋霞成人午夜伦在线观看| 国产亚洲va综合人人澡精品| 99久久综合99久久综合网站| 日韩高清电影一区| 国产精品三级在线观看| 欧美三级电影在线观看| 狠狠狠色丁香婷婷综合激情| 亚洲欧美另类图片小说| 日韩免费一区二区三区在线播放| 91官网在线观看| 久久精品二区亚洲w码| 国产精品沙发午睡系列990531| 欧美日韩你懂得| 国产成人免费高清| 午夜视频在线观看一区二区 | 日本女优在线视频一区二区| 中文字幕乱码日本亚洲一区二区| 色视频一区二区| 精油按摩中文字幕久久| 亚洲美女精品一区| 欧美大胆人体bbbb| 欧美性生活一区| 成人午夜av在线| 久久精品免费看| 一区二区在线观看视频| 久久久精品国产免费观看同学| 在线视频你懂得一区二区三区| 国产伦精品一区二区三区在线观看| 亚洲伊人色欲综合网| 中文字幕一区二区视频| 日韩免费高清av| 777亚洲妇女| 欧美三级日本三级少妇99| 成人h动漫精品| 国产精品1024| 精品亚洲成av人在线观看| 舔着乳尖日韩一区| 亚洲国产一二三| 亚洲视频 欧洲视频| 国产欧美精品一区二区色综合朱莉| 欧美日本一区二区三区四区| 色94色欧美sute亚洲13| 色婷婷综合久色| 91视频精品在这里| zzijzzij亚洲日本少妇熟睡| 欧美三区在线视频| 色欧美乱欧美15图片| 91色porny在线视频| 99国内精品久久| 99精品国产热久久91蜜凸| 成人精品国产福利| 本田岬高潮一区二区三区| 丁香婷婷深情五月亚洲| 国产精品77777竹菊影视小说| 激情综合色丁香一区二区| 日韩不卡一区二区| 日本不卡一区二区三区高清视频| 亚洲成a人在线观看| 亚洲成在线观看| 日韩成人一级片| 人人狠狠综合久久亚洲| 久久成人免费网站| 国内精品写真在线观看| 国内精品免费**视频| 国产激情一区二区三区| 成人午夜大片免费观看| 99久久久国产精品免费蜜臀| 色偷偷88欧美精品久久久| 欧美日韩成人高清| 日韩一二三区不卡| 国产亚洲美州欧州综合国| 日本一区二区三区在线不卡| 综合久久综合久久| 一区二区高清免费观看影视大全 | 777xxx欧美| 欧美成人欧美edvon| 国产日韩欧美在线一区| 国产精品萝li| 亚洲综合网站在线观看| 丝袜诱惑制服诱惑色一区在线观看 | 欧美一区二区三区播放老司机| 日韩免费观看高清完整版| 国产亚洲精品bt天堂精选| 国产精品传媒入口麻豆| 亚洲国产毛片aaaaa无费看 | 国产一区欧美二区| av电影在线观看完整版一区二区| 日本韩国欧美在线| 日韩一区二区三区电影| 国产视频一区二区在线| 亚洲国产精品一区二区www在线| 男女男精品视频| 99久久综合狠狠综合久久| 欧美美女bb生活片| 国产日产精品1区| 亚洲午夜久久久久中文字幕久| 免费在线视频一区| 91一区在线观看| 欧美一区二区免费| **欧美大码日韩| 青草国产精品久久久久久| 不卡的电影网站| 欧美一级国产精品| 亚洲日本青草视频在线怡红院| 青青国产91久久久久久| 99热这里都是精品| 精品国产乱码久久| 亚洲一区二区三区四区五区中文| 激情深爱一区二区| 欧洲亚洲精品在线| 国产网红主播福利一区二区| 亚洲国产成人av网| av爱爱亚洲一区| 久久影院午夜论| 丝袜美腿成人在线| 欧洲视频一区二区| 中文字幕国产一区| 国产原创一区二区| 91精品国产综合久久久久久| 亚洲欧洲国产日韩| 国产精品18久久久久久久久| 欧美精品视频www在线观看| 国产精品国产自产拍高清av | 成人午夜av电影| 欧美大片免费久久精品三p| 亚洲国产精品精华液网站| 99久久精品99国产精品| 国产午夜三级一区二区三| 麻豆精品在线播放| 5566中文字幕一区二区电影| 亚洲综合图片区| 在线免费观看不卡av| 中文字幕在线不卡一区| 丁香六月综合激情| 国产人伦精品一区二区| 国模娜娜一区二区三区| 日韩欧美国产麻豆| 蜜臀精品久久久久久蜜臀| 欧美精品三级日韩久久| 亚洲午夜三级在线| 欧美日韩视频专区在线播放| 一区二区三区不卡视频在线观看| 91天堂素人约啪| 一区二区三区在线视频观看58| 色综合中文字幕| 一区二区三区不卡视频在线观看| 色综合中文综合网| 欧美日韩极品在线观看一区| 亚洲国产一区二区在线播放| 欧美视频在线一区二区三区| 亚洲综合一区二区精品导航| 91精品福利视频| 一区二区三区在线不卡| 日本二三区不卡| 亚洲午夜国产一区99re久久| 欧美日韩亚洲综合| 老司机精品视频在线| 精品国产伦一区二区三区观看体验| 麻豆91精品视频| 中文字幕免费观看一区| 91免费版pro下载短视频| 有坂深雪av一区二区精品| 欧美在线播放高清精品| 五月婷婷综合网| 欧美变态口味重另类| 国产一区高清在线| 国产精品麻豆网站| 在线亚洲免费视频| 丝袜美腿一区二区三区| 久久久综合视频| 99久久久国产精品免费蜜臀| 亚洲一区二区三区视频在线| 欧美一区二区精品在线| 国产一区日韩二区欧美三区| 综合久久久久综合| 欧美伦理影视网| 国产剧情在线观看一区二区|