1. public class Test {
    2. private static BlockingQueue<Integer> blockingQueue = new LinkedBlockingQueue<>(10);
    3. public static void main(String[] args) {
    4. new Thread(new Producer(blockingQueue)).start();
    5. new Thread(new Consumer(blockingQueue)).start();
    6. }
    7. }
    8. class Producer implements Runnable {
    9. private BlockingQueue<Integer> blockingQueue;
    10. public Producer(BlockingQueue<Integer> blockingQueue) {
    11. this.blockingQueue = blockingQueue;
    12. }
    13. @SneakyThrows
    14. @Override
    15. public void run() {
    16. while (true) {
    17. Thread.sleep(50);
    18. Random random = new Random();
    19. int i = random.nextInt(10);
    20. System.out.println("生产者生产数据" + i);
    21. blockingQueue.put(i);
    22. System.out.println(blockingQueue.size());
    23. }
    24. }
    25. }
    26. class Consumer implements Runnable {
    27. private BlockingQueue<Integer> blockingQueue;
    28. public Consumer(BlockingQueue<Integer> blockingQueue) {
    29. this.blockingQueue = blockingQueue;
    30. }
    31. @SneakyThrows
    32. @Override
    33. public void run() {
    34. while (true) {
    35. Thread.sleep(1000);
    36. Integer i = blockingQueue.take();
    37. System.out.println("消费者消费数据" + i);
    38. }
    39. }
    40. }