File tree 1 file changed +3
-3
lines changed
docs/dataStructures-algorithms/data-structure
1 file changed +3
-3
lines changed Original file line number Diff line number Diff line change 88
88
89
89
** 栈** (stack)只允许在有序的线性数据集合的一端(称为栈顶 top)进行加入数据(push)和移除数据(pop)。因而按照 ** 后进先出(LIFO, Last In First Out)** 的原理运作。** 在栈中,push 和 pop 的操作都发生在栈顶。**
90
90
91
- 栈常用一维数组或链表来实现,用数组实现的队列叫作 ** 顺序栈** ,用链表实现的队列叫作 ** 链式栈** 。
91
+ 栈常用一维数组或链表来实现,用数组实现的栈叫作 ** 顺序栈** ,用链表实现的栈叫作 ** 链式栈** 。
92
92
93
93
``` java
94
94
假设堆栈中有n个元素。
@@ -305,6 +305,6 @@ myStack.pop();//报错:java.lang.IllegalArgumentException: Stack is empty.
305
305
- ** 阻塞队列:** 阻塞队列可以看成在队列基础上加了阻塞操作的队列。当队列为空的时候,出队操作阻塞,当队列满的时候,入队操作阻塞。使用阻塞队列我们可以很容易实现“生产者 - 消费者“模型。
306
306
- ** 线程池中的请求/任务队列:** 线程池中没有空闲线程时,新的任务请求线程资源时,线程池该如何处理呢?答案是将这些请求放在队列中,当有空闲线程的时候,会循环中反复从队列中获取任务来执行。队列分为无界队列(基于链表)和有界队列(基于数组)。无界队列的特点就是可以一直入列,除非系统资源耗尽,比如 :` FixedThreadPool ` 使用无界队列 ` LinkedBlockingQueue ` 。但是有界队列就不一样了,当队列满的话后面再有任务/请求就会拒绝,在 Java 中的体现就是会抛出` java.util.concurrent.RejectedExecutionException ` 异常。
307
307
- Linux 内核进程队列(按优先级排队)
308
- - 实现生活中的派对 ,播放器上的播放列表;
308
+ - 现实生活中的派对 ,播放器上的播放列表;
309
309
- 消息队列
310
- - 等等......
310
+ - 等等......
You can’t perform that action at this time.
0 commit comments