JAVA- PriorityQueue实现

时间:2013-02-07 09:42:19

标签: java heap priority-queue

Java,在PriorityQueue对象的实现中,使用Heap。 在执行poll()操作(例如,通过另一个线程)后,实现(通过Java)是否与“heapify”操作并行?

提前致谢。

2 个答案:

答案 0 :(得分:3)

heapify操作一次只考虑一个元素,下沉或筛选它。我不知道它可以并行化的方式。

如果你想确定为什么不查看代码呢?

编辑:我现在确定至少openjdk's implementation

答案 1 :(得分:1)

不,它不会对它进行并行化。该算法不是那样设计的。

另外,考虑到这一点,因为你必须等待整个操作完成,所以如果计算机只需要等待的重要代码块(例如检索一个代码块),你就只能从多线程中获得优势。网页)。由于堆显然不是这种情况,因此没有任何好处。

还有一件事:无论何时包含多线程,都需要付出代价:维护变得更加复杂,在线程实例化和锁定管理等方面花费了CPU时间......

在这种情况下,它无济于事。另一个问题是,如果您希望数据结构需要跨多台计算机分布式工作,在这种情况下,必须开发分布式变体,但前提是并行化有利于分配数据所涉及的开销。 / p>