1. 程式人生 > >【多執行緒】BlockingQueue阻塞佇列

【多執行緒】BlockingQueue阻塞佇列

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