JAVA-PriorityQueue实现

JAVA-PriorityQueue实现,java,heap,priority-queue,Java,Heap,Priority Queue,Java在PriorityQueue对象的实现中使用堆。 在poll()操作之后(例如,通过另一个线程),实现(通过Java)是否与“heapify”操作并行 提前感谢。heapify操作一次只考虑一个元素,下沉或筛选它。我不知道有什么方法可以将它并行化 如果你想确定为什么不看看代码 编辑:我现在确信至少对于来说,heapify操作一次只考虑一个元素,下沉或筛选它。我不知道有什么方法可以将它并行化 如果你想确定为什么不看看代码 编辑:我现在确定至少对于不,它不会并行化它。算法不是这样设计的 此外

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


提前感谢。

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

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


编辑:我现在确信至少对于

来说,heapify操作一次只考虑一个元素,下沉或筛选它。我不知道有什么方法可以将它并行化

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


编辑:我现在确定至少对于

不,它不会并行化它。算法不是这样设计的

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

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


在这种情况下,它不会有帮助。另一个问题是,如果您想要一个需要跨多台计算机分布式工作的数据结构,那么必须开发一个分布式变体,但前提是并行化的好处超过了分发数据所涉及的开销。

不,它没有并行化。算法不是这样设计的

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

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


在这种情况下,它不会有帮助。另一个问题是,如果您想要一个需要跨多台计算机分布式工作的数据结构,那么必须开发分布式变体,但前提是并行化的好处超过了分发数据所涉及的开销。

我感到困惑。在Begging中,javadocs说它是通过堆实现的,但后来它说:“优先级队列是无限的,但有一个内部容量控制用于存储队列上元素的数组的大小。”它是哪一个?如果它是一个堆,那么数组的作用是什么?我很困惑。在Begging中,javadocs说它是通过堆实现的,但后来它说:“优先级队列是无限的,但有一个内部容量控制用于存储队列上元素的数组的大小。”它是哪一个?如果它是一个堆,那么数组的作用是什么?