package com.gxx.record.utils; import org.apache.commons.lang3.RandomUtils; /** * 阻塞队列测试 * @author Gxx */ public class BlockingQueueTest { /** * 入口 * @param param */ public static void main(String[] param) { /** * 阻塞队列 */ BlockingQueue blockingQueue = new BlockingQueue(3); /** * 并发线程 */ Thread addTread1 = new AddThread(blockingQueue); Thread addTread2 = new AddThread(blockingQueue); Thread addTread3 = new AddThread(blockingQueue); Thread addTread4 = new AddThread(blockingQueue); Thread removeThread1 = new RemoveThread(blockingQueue); Thread removeThread2 = new RemoveThread(blockingQueue); Thread removeThread3 = new RemoveThread(blockingQueue); Thread removeThread4 = new RemoveThread(blockingQueue); /** * 启动线程 */ addTread1.start(); addTread2.start(); addTread3.start(); addTread4.start(); removeThread1.start(); removeThread2.start(); removeThread3.start(); removeThread4.start(); } } /** * 新增线程 * @author Gxx */ class AddThread extends Thread { BlockingQueue blockingQueue; public AddThread(BlockingQueue blockingQueue) { this.blockingQueue = blockingQueue; } @Override public void run() { blockingQueue.add("数字:[" + RandomUtils.nextInt(0, 100) + "]"); } } /** * 获取线程 * @author Gxx */ class RemoveThread extends Thread { BlockingQueue blockingQueue; public RemoveThread(BlockingQueue blockingQueue) { this.blockingQueue = blockingQueue; } @Override public void run() { blockingQueue.remove(); } }