package concurrentTest; import java.util.Random; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; public class TestBlockingQueue { public static void main(String[] args) { final BlockingQueue<Integer> queue=new LinkedBlockingQueue<Integer>(3); final Random random=new Random(); class Producer implements Runnable{ public void run() { while(true){ try { int i=random.nextInt(100); queue.put(i);//当队列达到容量时候,会自动阻塞的 System.out.println("put "+ i + " into queue"); } catch (InterruptedException e) { e.printStackTrace(); } } } } class Consumer implements Runnable{ public void run() { while(true){ try { System.out.println("consumer:" + queue.take());//当队列为空时,也会自动阻塞 Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } } } } new Thread(new Producer()).start(); new Thread(new Consumer()).start(); } }
BlockingQueue
最新推荐文章于 2024-09-22 16:37:50 发布