`
RednaxelaFX
  • 浏览: 3049359 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

Fork-join in Java 7

    博客分类:
  • Java
阅读更多
Java theory and practice: Stick a fork in it

引用
One of the additions to the java.util.concurrent packages coming in Java™ 7 is a framework for fork-join style parallel decomposition. The fork-join abstraction provides a natural mechanism for decomposing many algorithms to effectively exploit hardware parallelism.


汗...
Java 7不愧是kitchen-sink...不过这东西看起来又挺实用的,有些时候虽然觉得(在多处理器/多核心环境下)有些地方应该开多线程来做,不过要自己管理那么多东西也确实怪麻烦的。看一例子:

引用
Listing 3. Solving the select-max problem with the fork-join framework
public class MaxWithFJ extends RecursiveAction {
    private final int threshold;
    private final SelectMaxProblem problem;
    public int result;

    public MaxWithFJ(SelectMaxProblem problem, int threshold) {
        this.problem = problem;
        this.threshold = threshold;
    }

    protected void compute() {
        if (problem.size < threshold)
            result = problem.solveSequentially();
        else {
            int midpoint = problem.size / 2;
            MaxWithFJ left = new MaxWithFJ(problem.subproblem(0, midpoint), threshold);
            MaxWithFJ right = new MaxWithFJ(problem.subproblem(midpoint + 
              1, problem.size), threshold);
            coInvoke(left, right);
            result = Math.max(left.result, right.result);
        }
    }

    public static void main(String[] args) {
        SelectMaxProblem problem = ...
        int threshold = ...
        int nThreads = ...
        MaxWithFJ mfj = new MaxWithFJ(problem, threshold);
        ForkJoinExecutor fjPool = new ForkJoinPool(nThreads);

        fjPool.invoke(mfj);
        int result = mfj.result;
    }
}


不过这东西要是能配合匿名方法/闭包来做就更简洁了。
话说,Greg Wilson很明显对这东西不感冒。一提到调试器,这并行计算的痛处就又来了一个……
分享到:
评论

相关推荐

    Java 理论与实践:应用fork-join框架

    Java 语言从一开始能够支持线程和并发性;该语言包括像 synchronized 和 volatile 这样的同步原语,而类库包含像 Thread 这样的类。然而,1995 年流行的并发原语反映了当时的硬件现状:大多数商用系统根本没有提供...

    Java中的Fork/Join框架

    看了下Java Tutorials中的fork/join章节,整理下。  什么是fork/join框架  fork/join框架是ExecutorService接口的一个实现,可以帮助开发人员充分利用多核处理器的优势,编写出并行执行的程序,提高应用程序的...

    安装包下载jdk-7u65-windows-x64.rar安装包

    此外,还增强了并发编程的工具,如Fork/Join框架,提高了多线程处理任务的效率。 安装JDK 7u65的过程通常包括以下步骤: 1. 下载适用于64位Windows系统的jdk-7u65-windows-x64.exe文件。 2. 双击执行安装程序,按照...

    java-jdk1.7-jdk-7u80-windows-x64.zip

    安装Java JDK 1.7 on Windows x64的步骤非常简单,只需双击下载的“jdk-7u80-windows-x64.exe”文件,然后按照安装向导进行操作。安装过程中,记得选择合适的安装路径,并勾选“添加Java到系统环境变量”选项,以便...

    浅谈Java Fork/Join并行框架

    Java Fork/Join 并行框架是 Java 7 中引入的一个并行任务框架,可以将任务分割成足够小的小任务,然后让不同的线程来做这些分割出来的小事情,然后完成之后再进行 join,将小任务的结果组装成大任务的结果。...

    java7帮助文档

    The directory &lt;Java home&gt;/sample/forkjoin/ contains samples that demonstrate the fork/join framework. The ThreadLocalRandom class eliminates contention among threads using pseudo-random numbers; see ...

    Java - The Well-Grounded Java Developer

    - **Fork/Join Framework**: Introduction to the `ForkJoinPool` and `RecursiveTask` for implementing divide-and-conquer algorithms, improving scalability and responsiveness. **5. Class Files and ...

    Java虚拟机规范(Java SE 7).pdf

    2. **多线程并发改进**:Java 7对并发编程进行了优化,引入了Fork/Join框架,用于实现并行计算。这个框架将大型任务分解为较小的子任务,然后在多个线程之间分配执行,提高计算效率。 3. **异常处理优化**:Java 7...

    并行编程库(Coursera):Java并行编程(https:www.coursera.orglearnparallel-programming-in-java)

    1. **Fork/Join框架**:这是Java 7引入的一个用于并行执行任务的框架,它基于分治策略,将大任务分解为小任务,然后并行地执行这些小任务。Fork/Join框架的核心是`ForkJoinPool`,它管理着一系列的工作线程,而`...

    OnJava8-Examples-3.0_soucecode_java_

    8. **并行收集器与并行流**:Java 8的并发库引入了Fork/Join框架,它支持并行执行任务,尤其适用于数据集的并行处理。`ForkJoinPool`和`RecursiveTask`是其核心组件。同时,流API也支持并行操作,如`parallelStream...

    Concurrency-in-Java

    Fork/Join框架是Java 7引入的一种并行计算模型,它基于工作窃取算法,适合于分治策略的计算任务。 以上就是Java并发编程的一些核心知识点,理解并掌握这些概念和技术,能够帮助开发者编写出高效、稳定且易于维护的...

    java72-java-advance.zip

    8. **并发改进**:Java 7对并发API进行了一些优化,如Fork/Join框架,用于实现高效的并行计算。此外,`ConcurrentHashMap`的性能也有所提升。 9. **改进的数组初始化**:Java 7允许在数组初始化时使用紧凑的语法,...

    Java 7 Concurrency Cookbook

    Chapter 5, Fork/Join Framework will teach the readers to use the new Java 7 Fork/Join framework. It’s a special kind of executor oriented to execute tasks that will be divided into smaller ones using...

    concurrent-all-in-one.pdf

    13. **Fork/Join框架** - ForkJoinPool:处理并行任务的线程池。 - ForkJoinTask:可拆分的任务,支持递归分解。 14. **并发工具** - CountDownLatch、CyclicBarrier、Semaphore等,用于线程间协调,解决并发...

    Mastering Lambdas Java Programming in a Multicore World

    he Definitive Guide to Lambda Expressions Mastering Lambdas: Java ... the fork/join framework, and exceptions Examining stream performance with microbenchmarking API evolution using default methods

    Java虚拟机规范(Java SE 7)-完整目录书签文字版

    并且增强了并发编程的支持,如Fork/Join框架和新的并发集合类。 总结起来,《Java虚拟机规范(Java SE 7)》涵盖了JVM的各个方面,对于深入理解Java程序的运行机制、优化代码性能以及调试问题具有极高的价值。这份...

    Java-jdk-1.7.0

    此外,Java 7对并行流(Fork/Join Framework)进行了集成,这是Java并发处理的一个重要改进,它允许开发者编写高效且易于管理的多线程程序。ForkJoinPool和RecursiveTask是其中的关键类,它们可以自动管理任务的拆分...

Global site tag (gtag.js) - Google Analytics