本文共 2274 字,大约阅读时间需要 7 分钟。
方法:
boolean | ( e) 将指定的元素插入到此队列中,如果可以立即执行此操作而不违反容量限制, true 在成功后返回 IllegalStateException 如果当前没有可用空间,则抛出IllegalStateException。 |
boolean | ( o) 如果此队列包含指定的元素,则返回 true 。 |
int | (<? super > c) 从该队列中删除所有可用的元素,并将它们添加到给定的集合中。 |
int | (<? super > c, int maxElements) 最多从该队列中删除给定数量的可用元素,并将它们添加到给定的集合中。 |
boolean | ( e) 将指定的元素插入到此队列中,如果可以立即执行此操作,而不会违反容量限制, true 在成功时 false 如果当前没有可用空间,则返回false。 |
boolean | ( e, long timeout, unit) 将指定的元素插入到此队列中,等待指定的等待时间(如有必要)才能使空间变得可用。 |
| (long timeout, unit) 检索并删除此队列的头,等待指定的等待时间(如有必要)使元素变为可用。 |
void | ( e) 将指定的元素插入到此队列中,等待空格可用。 |
int | () 返回该队列最好可以(在没有存储器或资源约束)接受而不会阻塞,或附加的元素的数量 Integer.MAX_VALUE 如果没有固有的限制。 |
boolean | ( o) 从该队列中删除指定元素的单个实例(如果存在)。 |
| () 检索并删除此队列的头,如有必要,等待元素可用。 |
示例:
/** * 生产者 */public class Producer implements Runnable{ private final BlockingQueue queue; private int count=0; public Producer(BlockingQueue q){ queue=q; } @Override public void run() { try { while(!Thread.interrupted()){ queue.put(produce()); } } catch (InterruptedException e) { } } Object produce(){ count++; return "第"+count+"个任务"; }}
/** * 消费者 */public class Consumer implements Runnable{ private final BlockingQueue queue; public Consumer(BlockingQueue q){ queue=q; } @Override public void run() { try { while(true){ consume(queue.take()); } } catch (InterruptedException e) { } } public void consume(Object x){ System.out.println(x); }}
public class Main { public static void main(String[] args){ BlockingQueue queue=new ArrayBlockingQueue(10); Producer pro=new Producer(queue); Consumer con=new Consumer(queue); //开始生产 Thread a=new Thread(pro); a.start(); //开始消费 new Thread(con).start(); try { TimeUnit.MILLISECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } a.interrupt(); }}第1个任务 第2个任务 第3个任务 第4个任务 第5个任务 第6个任务 第7个任务 第8个任务 第9个任务 第10个任务 第11个任务 第12个任务 第13个任务 第14个任务 第15个任务 第16个任务 第17个任务 第18个任务 第19个任务 第20个任务 第21个任务 第22个任务 第23个任务 第24个任务 第25个任务 第26个任务 第27个任务 第28个任务 第29个任务 第30个任务 第31个任务 第32个任务 第33个任务
转载地址:http://gajqi.baihongyu.com/