package 归档; import java.util.LinkedList; /** * @autor aachen0 * @create 2018/3/20 20:33 * IDE:IntelliJ IDEA */ public class PanCake { public static void main(String[] args) { LinkedList<String> cakes = new LinkedList<>(); Maker wdl = new Maker("武大郎", cakes); Maker sj = new Maker("宋江", cakes); Eater pjl = new Eater("潘金莲", cakes); Eater ws=new Eater("武松",cakes); wdl.start(); sj.start(); pjl.start(); ws.start(); } } class Maker extends Thread { private String name;//做饼人 private LinkedList<String> cakes;//饼笼 Maker(String name, LinkedList<String> cakes) { this.name = name; this.cakes = cakes; } @Override public void run() { int index = 0; while (true) { synchronized (cakes) { try { sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } cakes.add(((index % 2 == 0) ? "大炊饼" : "小烧饼") + ++index); System.out.println(name+"做好了第" + index + "个"); if (cakes.size() >10) { try { System.out.println("饼筐满了,快来买啊!"); cakes.notify(); cakes.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } } class Eater extends Thread { private String name; private LinkedList<String> cakes; Eater(String name, LinkedList<String> cakes) { this.name = name; this.cakes = cakes; } @Override public void run() { while (true) { synchronized (cakes) { if (cakes.size() > 0) { System.out.println(name+"拿起一块" + cakes.pop() + "吃起来真开心"); try { sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } } else { System.out.println(name+":哎呀,没东西吃了"); try { cakes.notify(); cakes.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } }