public class Cook extends Thread{ ArrayBlockingQueue <String> queue; public Cook(ArrayBlockingQueue<String> queue) { this.queue = queue; } @Override public void run() { while(true){ //自带锁 try { queue.put("面条"); System.out.println("厨师放了一晚面条"); } catch (InterruptedException e) { throw new RuntimeException(e); } } } }
public class Fooddie extends Thread{ ArrayBlockingQueue<String> queue; public Fooddie(ArrayBlockingQueue<String> queue) { this.queue = queue; } @Override public void run() { while(true){ //自带锁 try { String food = queue.take(); System.out.println(food); } catch (InterruptedException e) { throw new RuntimeException(e); } } } }
public class threadDemo { public static void main(String[] args) { ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<>(1); Cook c = new Cook(queue); Fooddie f = new Fooddie(queue); c.start(); f.start(); } }