Java課程學習內容回顧(消費者和生產者)

2021-08-19 22:44:20 字數 1322 閱讀 8054

1.消費者和生產者的含義:

生產者生產產品,消費者去消費生產者生產的產品,就相當於是在讀寫過程一樣,當生產者在生產產品時,當生產品在生產時,消費者就需要等待(wait),而生產者生產完之後就會喚醒消費者(notify)讓消費者去消費,:而在消費者消費過程中,生產者在等待(wait),消費者消費完後就會喚醒生產者去生產(notify);而消費者和生產者相當於是兩個執行緒,而產品就是他們的公共資源(cpu)當開啟執行緒時要讓兩個交替迴圈的使用資源就必須要讓他們同步使用(synchronized)

2.例項: package sharedatedome;

//消費者

public class consumer extends thread

public void run() catch (interruptedexception e)

ch=s.getshare();

} while (ch!='d');}}

package sharedatedome;

import org.jboss.weld.exceptions.forbiddenargumentexception;

//生產者

public class producer extends thread

public void run() catch (interruptedexception e)

s.putshare(ch);}}

package sharedatedome;

/*** 生產者和消費者***特別的難點

* 1.共享乙個資源類2.生產者類3.消費者類

* @author lenovo**/

public class sharedate catch (interruptedexception e)     

}this.c=c;

isadd=true;  //表示有產品

notify();   //消費者消費,通知生產者生產

system.out.println("生產了產品"+c+"通知消費者消費");

}//同步方法getshare();

public synchronized char getshare() catch (interruptedexception e)     

}isadd=false;  //表示無產品

notify();   //生產者已經生產,通知消費者消費

system.out.println("消費者已經消費"+c+"通知生產者生產");

return c;}}

package sharedatedome;

public class test

}

java生產者消費者

題目 請用多執行緒實現乙個生產者類和乙個消費者類,生產者隨機生成20個字元,消費者將字元列印到控制台。class syncstackcatch interruptedexception e this.notify 通知其它執行緒把資料出棧 buffer index c 資料入棧 index 指標向上...

java生產者消費者程式

package com.thread.sync 著名的生產者消費者程式 生產者向容器裡放東西,同時消費者取出去 public class producerconsumer 產品類 class produce override public string tostring 容器類,先進去後拿出來 cl...

生產者 消費者模式 java

生產者 消費者模式要求在同乙個程序位址空間內執行的兩個執行緒。生產者執行緒生產物品,然後將物品放置在乙個空緩衝區中供消費者執行緒消費。消費者執行緒從緩衝區中獲得物品,然後釋放緩衝區。當生產者執行緒生產物品時,如果沒有空緩衝區可用,那麼生產者執行緒必須等待消費者執行緒釋放出乙個空緩衝區。當消費者執行緒...