【多執行緒】BlockingQueue阻塞佇列
阿新 • • 發佈:2019-02-15
BlockingQueue繼承Queue介面
BlockingQueue加入了阻塞等待的操作,可以理解成如果佇列滿了,插入任務就在門口等著,不丟擲錯誤資訊,直到有元素從佇列中取出,佇列有空位了,再進行插入操作,相應的你還可以加入等待超時機制,如果過時了,就不等了。
public class BlockingQueueTest { public static void main(String[] args) { //初始化佇列,佇列空間為3 final BlockingQueue<String> queue=new ArrayBlockingQueue<String>(3); //建立模擬【放入】操作的執行緒 Thread put=new Thread(new Runnable(){ @Override public void run() { for(int i=1;i<10;i++){ try { queue.put("貨物"+i); //往佇列中新增貨物 System.out.println("成功放入獲取"+i); } catch (InterruptedException e) { e.printStackTrace(); } } } }); put.start(); //開啟【放入】 //建立模擬【取出】操作的執行緒 Thread take=new Thread(new Runnable(){ @Override public void run() { while(true){ try { Thread.sleep(3000); String taker=queue.take(); //從佇列中取出貨物 System.out.println("取出貨物"+taker); } catch (InterruptedException e) { e.printStackTrace(); } } } }); take.start(); //開啟【取出】 } }
當放滿了就等待佇列取出,有空位了就再次放入
轉載自;https://blog.csdn.net/great_smile/article/details/42527071