前言:
在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。
认识BlockingQueue
阻塞队列,顾名思义,首先它是一个队列,而一个...
分类:
其他好文 时间:
2014-08-08 18:13:36
阅读次数:
308
两个栈实现队列+两个队列实现栈----java
一.两个栈实现一个队列
思路:所有元素进stack1,然后全部出stack1并进入stack2.实现队列的先进先出即:若stack2非空,我们需要的恰好再栈顶,出栈;若要给队列添加元素,即先进sack1,要出队时,若stack2不为空就出栈,为空时就把stack1全部进栈到stack2
二.两个队列实现一个栈
ps:图...
分类:
编程语言 时间:
2014-08-08 01:59:45
阅读次数:
292
pthread_cond_wait在把线程放进阻塞队列后,自动对mutex进行解锁(它内部有自己维护一个队列),使得其他线程可以获得加锁的权利。这样其它线程才能对临界资源进行访问并在适当的时候唤醒这个阻塞的进程。当pthread_cond_wait返回的时候又会自动给mutex加锁,所以最后需要一个...
分类:
其他好文 时间:
2014-08-06 18:05:42
阅读次数:
260
队列和堆栈都是约束版的链表,就像在超市购物,队列是先进先出的数据结构。 接着上一篇,派生于链表类List,来模拟一个队列。namespace LinkedListLibrary{ public class QueueInheritance : List { public QueueInheritan...
分类:
其他好文 时间:
2014-08-04 20:45:57
阅读次数:
232
1.队列的概念
队列是一种特殊的线性表,只允许在队列的一端进行插入而在另一端进行删除。
队列一般拥有队首(front指针)和队尾(rear指针),当一个队列并未存入数据的时候,front和rear指针均指向队首。
入队的操作:rear后移,存入数据在rear指向的单元,队满不可入队,这同时也表明front总是指向队首元素的前驱。
出队的操作:front后移,元素出队,队空不可出队。
注意...
分类:
其他好文 时间:
2014-08-04 17:45:48
阅读次数:
213
UVA 501 - Black Box
题目链接
题意:给定一些操作,每次add进一个数,然后第i次询问的时候输出当前第i小的数字
思路:用两个优先队列搞,相当于把序列分成两个序列,每次取的答案就是后一个队列的头
代码:
#include
#include
#include
#include
using namespace std;
const int N ...
分类:
其他好文 时间:
2014-08-03 18:07:15
阅读次数:
226
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1702题目大意:按照所给要求,输出相应的数。“FIFO”指代先进先出,即队列的概念,“FILO”指代先进后出,即栈的表现形式~这里定义两个函数即可,一个队列,一个栈的调用! 1 #include 2 #....
分类:
其他好文 时间:
2014-07-30 23:42:25
阅读次数:
297
下面是一个多线程,生产者消费者问题,一个队列放暂存的数据: 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using std::cout; 8 using std::endl; 9 using std::queu...
分类:
编程语言 时间:
2014-07-30 00:44:12
阅读次数:
430
UVA 10410 - Tree Reconstruction
题目链接
题意:给定一个树的dfs序列和bfs序列,求出这颗树
思路:拿dfs的序列,分成若干段,每一段相当一个子树,这样就可以利用bfs的序列去将dfs的序列分段,然后利用一个队列去存放每一段,不断求出子树即可。一开始以为parse tree一定是二叉树,原来不一定啊。
代码:
#include
#i...
分类:
其他好文 时间:
2014-07-27 11:49:23
阅读次数:
155
写出一个较好的快速排序程序
快速排序是常用的排序算法之一,但要想写出一个又快又准的使用程序,就不是那么简单了
需要注意的事项
首先要写正确。通常使用递归实现。其递归相当于二叉树展开,因此如果要用迭代实现的话需要使用一个队列来保存后续遍历信息。快速排序需要找到一个pivot值,如果顺序选择pivot则易造成N^2的复杂度,如果使用随机数则效果最好,但开销又太大,采取三数中值法比较合适。...
分类:
其他好文 时间:
2014-07-27 11:19:02
阅读次数:
190