@(一隻心中無碼的程序員)專欄java
- 果真,釋放天性後,果真強悍的不行啊,哈哈!
import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; public class Test { public static void main(String[] args) { //1.建立緩衝區 BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(5); //2.建立生產者對象 Producer producer = new Producer(queue); //3.建立消費者者對象 Consumer consumer = new Consumer(queue); producer.start(); consumer.start(); } }
import java.util.concurrent.BlockingQueue; //表明生產者 public class Producer extends Thread { private BlockingQueue<Integer> queue; private int num; public Producer(BlockingQueue<Integer> queue) { this.queue = queue; } @Override public void run() { while(true){ try { queue.put(num); System.out.println("我生產了數據"+num); num++; Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } } } }
import java.util.concurrent.BlockingQueue; //表明消費者 public class Consumer extends Thread { private BlockingQueue<Integer> queue; public Consumer(BlockingQueue<Integer> queue) { this.queue = queue; } @Override public void run() { while(true){ try { int num = queue.take(); System.out.println("我消費了數據"+num); Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }
//表明消費者 public class Consumer extends Thread { private Basket basket; public Consumer(Basket basket) { this.basket = basket; } @Override public void run() { while(true) { if(basket.getQueue().size() == 0) { System.out.println("籃子空了,取不了了"); } Apple apple = basket.getApple(); System.out.println("我拿出了蘋果" + apple.getName()); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } } }
//表明生產者 public class Producer extends Thread { private Basket basket; private int num; public Producer(Basket basket) { super(); this.basket = basket; } @Override public void run() { while(true) { if(basket.getQueue().size() == 3) { System.out.println("籃子放滿了,放不進去了"); } Apple apple = new Apple("name" + num); basket.putApple(apple); System.out.println("我放入了蘋果" + apple.getName()); num++; try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }
public class Apple { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public Apple() { } public Apple(String name) { this.name = name; } }
import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; public class Basket { private BlockingQueue<Apple> queue = new ArrayBlockingQueue<>(3); public void putApple(Apple apple) { try { queue.put(apple); } catch (InterruptedException e) { e.printStackTrace(); } } public Apple getApple() { try { Apple apple; apple = queue.take(); return apple; } catch (InterruptedException e) { return null; } } public BlockingQueue<Apple> getQueue() { return queue; } }
public class Test { public static void main(String[] args) { //1.建立緩衝區 Basket basket = new Basket(); //2.建立生產者對象 Producer producer = new Producer(basket); //3.建立消費者者對象 Consumer consumer = new Consumer(basket); producer.start(); consumer.start(); } }