考慮這樣乙個飯店,他有乙個廚師和乙個服務生,然後服務生必須等待廚師準備好食物,當廚師準備好食物時,他會通知服務生,然後服務生上菜,
然後返回繼續等待。
/**通過判斷餐廳中的食物是否為空來控制兩個執行緒是否等待和執行。* 食物
*/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聯絡到一起。生產者存放了若干次的資料,消費者才開始讀取資料,或者是消費者取完乙個資料...