ArrayBlockingQueue实例

package concurrent.arrayblockingQueue;

import java.util.Iterator;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;
/**
 * ArrayBlockingQueue长度固定大小
 * LinkedBlockingQueue长度大小可以不固定
 * 
 * 插入方法:
 * add(E e):将指定的元素插入到此队列的尾部(如果立即可行且不会超过该队列的容量),在成功时返回 true,如果此队列已满,则抛出 IllegalStateException
 * offer(E e):将指定的元素插入到此队列的尾部(如果立即可行且不会超过该队列的容量),在成功时返回 true,如果此队列已满,则返回 false
 * offer(E e, long timeout, TimeUnit unit): 将指定的元素插入此队列的尾部,如果该队列已满,则在到达指定的等待时间之前等待可用的空间
 * put(E e):将指定的元素插入此队列的尾部,如果该队列已满,则等待可用的空间
 * 
 * 获取方法:
 * peek():获取但不移除此队列的头;如果此队列为空,则返回 null
 * poll():获取并移除此队列的头,如果此队列为空,则返回 null
 * take(): 获取并移除此队列的头部,在元素变得可用之前一直等待(如果有必要)
 * 
 * 
 */
public class ArrayBlockingQueueTest {
	
	public static BlockingQueue<String> queue=new ArrayBlockingQueue<String>(5);

	public static void main(String[] args) throws InterruptedException {
				
		boolean b;
		for(int i=0;i<10;i++){
			b=queue.offer(String.valueOf(i),1000,TimeUnit.MILLISECONDS);
//			b=queue.add(String.valueOf(i));
//			queue.put(String.valueOf(i));
			System.out.println(b);
			
		}
		queue.remove("1");//移除指定元素
		System.out.println("contains:"+queue.contains("0"));
		System.out.println("*****************");
		
		for(int i=0;i<10;i++){
			String s=queue.poll();
//			String s=queue.poll(1000,TimeUnit.MILLISECONDS);
//			String s=queue.take();
			System.out.println(s);
		}
		
		System.out.println("队列长度:"+queue.size());
		System.out.println(queue.toString());
		
		
		Iterator<String> it = queue.iterator();
		while(it.hasNext()){
			String value=it.next();
			System.out.println(value);
		}
		
		
	}
}

你可能感兴趣的:(ArrayBlockingQueue实例)