Java 使用jdk 7的新fork-join框架的性能问题
我正在使用jdk 7的新forkjoin框架。 我有一个任务,必须用不同的参数执行多次 此任务扩展了递归任务。有100多个任务要执行,可以同时执行。任务是独立的,因此不需要任何同步。 因此,我首先创建了所需的任务,并将它们传递给forkjoin线程池。 但是应用程序的运行速度比没有任何并行性的情况下要慢 我的第一个想法是,我创造了很多线程。。这就是为什么我尝试回收线程以减少对象创建开销,但这对性能没有影响。用于使用reinitialize()方法回收im。此外,通过循环使用,性能比在没有任何并行性的情况下运行要慢Java 使用jdk 7的新fork-join框架的性能问题,java,multithreading,performance,parallel-processing,fork-join,Java,Multithreading,Performance,Parallel Processing,Fork Join,我正在使用jdk 7的新forkjoin框架。 我有一个任务,必须用不同的参数执行多次 此任务扩展了递归任务。有100多个任务要执行,可以同时执行。任务是独立的,因此不需要任何同步。 因此,我首先创建了所需的任务,并将它们传递给forkjoin线程池。 但是应用程序的运行速度比没有任何并行性的情况下要慢 我的第一个想法是,我创造了很多线程。。这就是为什么我尝试回收线程以减少对象创建开销,但这对性能没有影响。用于使用reinitialize()方法回收im。此外,通过循环使用,性能比在没有任何并行
任务中执行的操作并不简单,运行线程的持续时间为5到150毫秒。应用程序在双核机器上运行,im使用ubuntu和oracle jdk 7。库普斯福特的爱德华·哈内德发现了Java中实现的Fork/Join设计的许多问题 特别是,“工作窃取”会遭受高竞争&在多个处理器之间分配工作效率低下。递归分解也不是特别有效 如果您的任务不是递归的——您说有100个,并且它们可以并发执行——那么使用ThreadPoolExecutor的更简单方法可能更有效 见: