【BlockingQueue常见】 [ ArrayBlockingQueue ] 基于数组的阻塞队列的实现,在ArrayBlockingQueue内部,维护了一个定长数组,以便缓存队列中的数据对象,其内部没实现读写分离,也就意味着生产者和消费者不能完全并行,长度需要自定义,可以指定先进先出或者先进后 ...
分类:
其他好文 时间:
2017-10-14 18:33:16
阅读次数:
165
队列的一个非常重要的特点就是:只允许在队列的头部进行删除操作,只允许在队列的尾部进行插入操作。所以,很明显,队列这种结构需要两个指针,一个指针指向队列的头部,一个指针指向队列的尾部。既然队列这种结构也是用来存放数据的,当有一个数据存入队列中时,指向尾部的指..
分类:
其他好文 时间:
2017-09-24 18:20:50
阅读次数:
141
1. 什么是阻塞队列? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。 ...
分类:
编程语言 时间:
2017-09-12 12:03:47
阅读次数:
252
参考博客:浅谈算法和数据结构: 一 栈和队列 Python数据结构——栈、队列的实现(一) Python数据结构——栈、队列的实现(二) Python数据结构——链表的实现 数据结构 定义:简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中。比如:列表、集合与字典等都是一种数据结构。 PS ...
分类:
编程语言 时间:
2017-09-09 21:37:13
阅读次数:
255
队列是一种典型的先进先出数据结构,队列的实现方式有很多种,比如数组,比如链表等,队列也可以用两个栈来实现,下面就用两个栈实现一个队列。 原理 两个栈中,一个栈用来入队,叫他入队栈,另一个栈用来出队,叫出队栈。 当入队时,我们直接把元素压入入队栈。 当出队时,分两种情况: ①若出队栈不为空,则直接出队 ...
分类:
编程语言 时间:
2017-08-29 14:38:46
阅读次数:
226
链表的两种底层结构 1.ArrayList实现单链表(其实就是一个顺序数组) ArrayList其实就是一组长度可变的数组,当实例化了一个ArrayList,该数据也被实例化了,当向集合中添加对象时,数组的大小也随着改变,这样它所带来的有优点是快速的随机访问(数组可以利用下标直接访问),即使访问每个 ...
分类:
其他好文 时间:
2017-08-29 14:26:57
阅读次数:
243
队列和栈简单的区别为栈是后进先出,队列是先进先出。队列也是特殊的线性表,所以队列也分为顺序存储结构和链式存储结构。本篇主要描述顺序存储结构。 我们先假定一个队列里有5个元素,当我们添加新元素时,添加到队列的最后一个位置,所以时间复杂度为O(1),当我们弹出元素时,需要将队列头部的元素弹出,并将后面的 ...
分类:
其他好文 时间:
2017-08-08 15:20:53
阅读次数:
169
锁是高性能程序的杀手,但是为了保证数据的一致性,在多线程的应用环境下又不得不加锁。但是在某些特殊的场景下, 是可以通过优化数据结构来达到无锁的目的。那么我们就来看一下如何实现一个无锁队列。 队列:众所周知,就是先进先出。 出队列的时候从队列头取出一个结点;入队列的时候,将结点添加到队列尾部。当多线程 ...
分类:
其他好文 时间:
2017-07-04 11:07:05
阅读次数:
169
原文出处: ziwenxie 优先队列是在实际工程中被广泛应用的一种数据结构,不管是在操作系统的进程调度中,还是在相关的图算法比如Prim算法和Dijkstra算法中,我们都可以看到优先队列的身影,本文我们就来分析一下优先队列的实现原理。 优先队列 以操作系统的进程调度为例,比如我们在使用手机的过程 ...
分类:
其他好文 时间:
2017-06-25 23:14:07
阅读次数:
316
package com.fanzhang; class Queue //队列类 { private int maxSize; //队列长度,由构造函数初始化 private long[] queArray; // 队列 private int front; //队头 private int rear ...
分类:
其他好文 时间:
2017-06-20 14:58:34
阅读次数:
139