队列也是一种特殊的线性表,像栈是先进后出(FILO),而队列就像排队一样,先进的先出(FIFO)。插入时只能插入到队列的后端,删除时只能删除头部,这样的数据结构能维持住排队的次序。
在Java里有Queue这个接口,和List、Set同一级。像LinkedList类就同时implements了List和Queue接口。
乍一看,平时项目里好像没用到队列的场景,其实不然,队列应用场景极为丰富,也是许多架构里必须的中间件。
当然,主要用的不是Java里的Queue接口,而是另一种根据Queue的特性构建的复杂的消息队列中间件。著名的RabbitMQ,阿里的RocketMQ等。
队列是个非常好用的中间件,可以应对很多业务的场景需要。譬如解耦,系统间通信,大并发削峰等。平时主要使用阿里的消息队列,文档齐全,配置也简单,实乃利器,如果没用功队列的,一定去研究研究,绝对会用的上。