多執行緒之生產者與消費者問題

2021-08-05 19:01:14 字數 1186 閱讀 8328

生產者生產產品後將產品放在乙個倉庫裡,消費者購買省商品相當於從倉庫裡拿出商品。這其中涉及到的有生產者、消費者與倉庫以及產品四個物件,因此需要建立四個類來表示。最後還需要乙個測試類。對於生成與消費這兩個動作可是是同時執行的(只要有商品的話),因此需要使用到多執行緒的知識。
product類

public

class product

public

intgetid()

public

void

setid(int id)

}

storage類

public

class

storage catch (interruptedexception e)

}this.notifyall();//喚醒該執行緒

ps[index] = p;

index++;

}//取出產品的方法

public

synchronized product pop() catch (interruptedexception e)

}this.notifyall();

index--;

return ps[index];

}}

producer類

public

class

producer

extends

thread

//因為繼承了thread類,所以需要重寫run方法

@override

public

void

run()catch(interruptedexception e)

}}

customer類

public

class

customer

extends

thread

@override

public

void

run() catch (interruptedexception e) }}

}

testmain類

public

class test

}

多執行緒之生產者與消費者問題

考慮這樣乙個飯店,他有乙個廚師和乙個服務生,然後服務生必須等待廚師準備好食物,當廚師準備好食物時,他會通知服務生,然後服務生上菜,然後返回繼續等待。食物 class meal public string tostring 服務生 class waitperson implements runnabl...

多執行緒之生產者消費者問題

生產者 producer 消費者consumer 籃子 basket stack 以棧結構代替的籃子,丟進去的饅頭滿足先進後出 問題描述 生產者生產10個饅頭丟進容量只有6的籃子裡面,消費者不斷吃掉籃子中的饅頭。package consumer producer public class consu...

多執行緒之消費者生產者問題

未經過處理的 如下 這裡有兩個問題 首先是對於info物件,生產者可能只新增了webname的資訊,而沒有來得及新增link資訊,程式就切換到了消費者執行緒,消費者執行緒將webname和上乙個info物件的link聯絡到一起。生產者存放了若干次的資料,消費者才開始讀取資料,或者是消費者取完乙個資料...