Skip to content

Commit

Permalink
Update 线性数据结构.md
Browse files Browse the repository at this point in the history
89 队列->栈
308 实现->现实
  • Loading branch information
DONTWANTTOSLEEP authored Jan 8, 2021
1 parent 4d54264 commit 3e8b992
Showing 1 changed file with 3 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@

**** (stack)只允许在有序的线性数据集合的一端(称为栈顶 top)进行加入数据(push)和移除数据(pop)。因而按照 **后进先出(LIFO, Last In First Out)** 的原理运作。**在栈中,push 和 pop 的操作都发生在栈顶。**

栈常用一维数组或链表来实现,用数组实现的队列叫作 **顺序栈**用链表实现的队列叫作 **链式栈**
栈常用一维数组或链表来实现,用数组实现的栈叫作 **顺序栈**用链表实现的栈叫作 **链式栈**

```java
假设堆栈中有n个元素。
Expand Down Expand Up @@ -305,6 +305,6 @@ myStack.pop();//报错:java.lang.IllegalArgumentException: Stack is empty.
- **阻塞队列:** 阻塞队列可以看成在队列基础上加了阻塞操作的队列。当队列为空的时候,出队操作阻塞,当队列满的时候,入队操作阻塞。使用阻塞队列我们可以很容易实现“生产者 - 消费者“模型。
- **线程池中的请求/任务队列:** 线程池中没有空闲线程时,新的任务请求线程资源时,线程池该如何处理呢?答案是将这些请求放在队列中,当有空闲线程的时候,会循环中反复从队列中获取任务来执行。队列分为无界队列(基于链表)和有界队列(基于数组)。无界队列的特点就是可以一直入列,除非系统资源耗尽,比如 :`FixedThreadPool` 使用无界队列 `LinkedBlockingQueue`。但是有界队列就不一样了,当队列满的话后面再有任务/请求就会拒绝,在 Java 中的体现就是会抛出`java.util.concurrent.RejectedExecutionException` 异常。
- Linux 内核进程队列(按优先级排队)
- 实现生活中的派对,播放器上的播放列表;
- 现实生活中的派对,播放器上的播放列表;
- 消息队列
- 等等......
- 等等......

0 comments on commit 3e8b992

Please sign in to comment.