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

2021-08-01 18:04:36 字數 1393 閱讀 2412

考慮這樣乙個飯店,他有乙個廚師和乙個服務生,然後服務生必須等待廚師準備好食物,當廚師準備好食物時,他會通知服務生,然後服務生上菜,

然後返回繼續等待。

/**

* 食物

*/class meal

public string tostring()

}/**

* 服務生

*/class waitperson implements runnable

@override

public void

run()

system.out.println("waitperson got "+restaurant.meal);

synchronized (restaurant.chef)

}} catch (interruptedexception e)

}}/**

* 廚師

*/class chef implements runnable

@override

public void

run()

if(++count==10)

system.out.println("order up!");

synchronized (restaurant.waitperson)

timeunit.milliseconds.sleep(100);

} } catch (interruptedexception e)

}}public class restaurant

public static void

main(string args)

}

通過判斷餐廳中的食物是否為空來控制兩個執行緒是否等待和執行。

效果:order up!

waitperson got meal 1

order up!

waitperson got meal 2

order up!

waitperson got meal 3

order up!

waitperson got meal 4

order up!

waitperson got meal 5

order up!

waitperson got meal 6

order up!

waitperson got meal 7

order up!

waitperson got meal 8

order up!

waitperson got meal 9

out of food.closing

order up!

waitperson interrupted

chef interrupted

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

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

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

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

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

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