Deque与work stealing

来源:互联网 发布:淘宝高开叉紧身长裙 编辑:程序博客网 时间:2024/04/29 12:01

双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的数据结构。双端队列中的元素可以从两端弹出,插入和删除操作限定在队列的两边进行。

(顶级接口)Collection-->Queue-->Deque-->LinkedList(实现类,双向链表)
Deque,可以实现窃取工作(work stealing),能够保证每个线程都保持忙碌状态。
所谓的窃取指的是,默认情况下线程从队列中获取任务进行计算处理,当某些线程在自己的任务队列中没有任务的时候,也不闲着,从其他线程的工作队列中去“偷”计算任务,为了不影响其他线程的任务,就从其他线程任务队列的另一端去获取任务。双端队列一般应用于非常高效的多线程应用当中,开发过程中需要有很多的技巧,普通的多线程应用中使用意义也不是太大。fork/join框架
线程及同步的性能 – 线程池/ ThreadPoolExecutors/ ForkJoinPool

4、堆排序与直接插入排序的区别     直接选择排序中,为了从R[1..n]中选出关键字最小的记录,必须进行n-1次比较,然后在R[2..n]中选出关键字最小的记录,又需要做n-2次比较。事实上,后面的n-2次比较中,有许多比较可能在前面的n-1次比较中已经做过,但由于前一趟排序时未保留这些比较结果,所以后一趟排序时又重复执行了这些比较操作。     堆排序可通过树形结构保存部分比较结果,可减少比较次数。

0 0