java.util.concurrent
程序员文章站
2022-07-05 18:43:27
...
1.接口 BlockingQueue :
通常用于一个线程生产对象,而另一个线程消费这些对象的场景。
队列满了后,往里放的线程会被阻塞;
队列空了之后,取任务的线程会被阻塞;
常用实现有:ArrayBlockingQueue,LinkedBlockingQueue
psvmPut(){
BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(10);
for(int i=0;i<10;i++){
queue.put(i);
}
queue.add(11); //满了之后,add方法会抛异常
queue.offer(11); //offer方法会返回特定值:true 和 false
queue.put(11);
//put方法是队列的经典方法,经常会使用,需重点掌握,满了后会产生阻塞
//当队列有剩余容量(被消费时),阻塞会放开
queue.offer(11,3,TimeUnit.SECONDS); //超时会放开,有剩余容量会放开
}
psvmTimeOut(){
BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(0);
queue.offer(11,3,TimeUnit.SECONDS);
psvmTimeOut();
}
psvmPop(){
BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(10);
queue.remove(); //队列为空,remove方法会抛异常
queue.poll(); //poll方法返回特定值:null 和 元素值
queue.take(); //take方法会阻塞
queue.pull(3,TimeUnit.SECONDS); //超时方法
}
补充:
DelayQueue 的元素必须实现 Delayed 接口;
PriorityBlockingQueue 的元素必须实现 Comparable 接口;
SynchronousQueue 是一个特殊队列,它的内部一个时间点只能容纳单个元素;
BlockingDequeue :putFirst,putLast;takeFirst,takeLast;
推荐阅读
-
java.util.concurrent常用类(CountDownLatch,Semaphore,CyclicBarrier,Future)
-
java.util.concurrent介绍
-
java.util.concurrent介绍
-
JUC(java.util.concurrent)要点笔记
-
转 Java并发包java.util.concurrent简介
-
转 Java并发包java.util.concurrent简介
-
java.util.concurrent
-
JAVA源代码-java.util.concurrent 包--CopyOnWriteArrayList
-
java.util.concurrent 多线程框架实例(转)
-
java.util.concurrent 多线程框架实例(转)