Java 在 PriorityQueue 对象的实现中使用了 Heap。实现(通过 Java)是否在 poll() 操作(例如,通过另一个线程)之后并行“heapify”操作?
提前致谢。
Java 在 PriorityQueue 对象的实现中使用了 Heap。实现(通过 Java)是否在 poll() 操作(例如,通过另一个线程)之后并行“heapify”操作?
提前致谢。
不,它不会并行化它。该算法不是那样设计的。
此外,请考虑到,由于您必须等待整个操作完成,因此只有在计算机必须等待的重要代码块(例如检索网页)的情况下,您才能从多线程中获得优势. 由于堆显然不是这种情况,因此没有任何好处。
还有一件事:每当包含多线程时,也需要付出代价:维护变得更加复杂,线程实例化和锁管理花费了 CPU 时间等等......
在这种情况下,它无济于事。另一个问题是,如果您想要一个需要在多台计算机上分布式工作的数据结构,在这种情况下,必须开发一个分布式变体,但前提是并行化的好处超过了分发数据所涉及的开销。