Java并发编程从入门到精通 之 第五章 多线程之间交互:线程阀

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28666081/article/details/79967835
线程是一种线程与线程之间相互制约与交互的机制。

阻塞队列BlockingQueue:
-1 多个队列概念:
Queue: 队列,遵循先进先出
Deque:双端队列,先进后出,栈结构。
BlockingQueue: 阻塞队列,线程会等待非空(取),非满(写),适合生产者消费者场景。
-2 基本方法:add,offer,put,poll(取走排在首位对象),take(同上,但是队列为空会等待至加入有为止)


数组阻塞队列ArrayBlockingQueue:有界缓存区
    

链表阻塞队列LinkedBlockingQueue:
-1 说明:默认无限大小容量,生产者消费者锁独立,所以可并发处理数据。
-2 基本方法:offerLast、offer、add、addLast、pollFirst、removeFirst

优先级阻塞队列PriorityBlockingQueue:
支持优先级的无界阻塞队列


延时队列DelayQueue:
-1 说明:支持延时获取,可指定多久才能从队列中获取元素
-2 场景:循环查询,一旦能从该队列获取,表示缓存器到了。
-3 使用实例:
class S implaments Delayed {  //操作的对象必须实现Delayed
....
}


同步队列SynchronizedQueue:
-1 说明:不存储元素的阻塞队列,每put一次就必须take一下。
-2 使用场景:适合传递性场景如一个线程数据传给另一个线程


 链表双向阻塞队列LinkedBlockingDeque:
-1 说明:可从两端插入移除,多了addFirst、addFirst、offerFirst、offerLast、peekFirst、peekLast(获取最后一个元素)


同步计数器CountDownLatch:
-1 说明:计数器,计数到零前,await阻塞。
-2 使用场景:多线程上传,多个上传完才算完成。计数的await才不阻塞。
-3 基本方法:await、countDown(减少计数1)
-4 类似:Semaphore(3);--标识允许三个线程同时访问。
         计数信号量,方法:x.acquire()和xx.release();







阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页