队列(queue)

队列(queue):
队列在线程池等有限资源池中的应用。

    我们知道,CPU资源是有限的,任务的处理速度与线程个数并不是线性正相关。相反,过多的线程反而会导致CPU频繁
切换,处理性能下降。所以,线程池的大小一般都是综合考虑要处理任务的特点和硬件资源,来事先设置的。
    当我们向固定大小的线程池中请求一个线程时,如果线程池中没有空闲资源,这个时候线程池如何处理这个请求?是
拒绝请求还是排队请求?各种处理策略又是怎么实现的呢?
    实际上,这些问题并不复杂,其底层的数据结构就是,队列。

如何理解队列:
    队列这个概念非常好理解。你可以把它想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队。先进者
先出,这就是典型的“队列”。
    我们知道,栈只支持两个基本操作:入栈push()和出栈pop()。队列跟栈非常相似,支持的操作也很有限,最基本的
操作也是两个:入队enqueue(),放一个数据到队列尾部;出队dequeue(),从队列头部取一个元素。
    所以,队列跟栈一样,也是一种非常基础的数据结构,队列的应用也非常广泛,特别是一些具有某些特性的队列,
比如循环队列,阻塞队列,并发队列。他们在很多偏底层系统,框架,中间件的开发中,起着关键性的作用。比如高性能
队列Disruptor,Linux环形缓存,都用到了循环并发队列;Java concurrent并发包利用ArrayBlockingQueue来实现
公平锁等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值