zoukankan      html  css  js  c++  java
  • Java中的并行

    将线性工作改为并行执行

    void processSequentially(List<Element> elements){

    for(Element e:elements)

       process(e);

    }

    void processParallel(Executor exec,List<Element>elements){

    for(final Element e:elements)

       exec.execute(new Runnable()

         {

       public void run(){

       process(e);

    }

    }

    );

    }

    这些工作应该是独立的。

    并行递归:

    public <T>void sequentialRecursive(List<Node<T>>nodes,Collection<T>results){

        for(Node<T>n:nodes){

        results.add(n.computer);

        sequentialRecursive(n.getChildren(),results);

    }

    }

    public void parallelRecirsive(final Executor exec,List<Node<T>> nodes,final Collection<T>results){

        for(final Node<T> n:nodes){

          exec.execute(new Runnable(){

           public void run(){

             results.add(n.compute());

        }

    }

    );

    paralleRecursive(exec,n.getChildren(),results);

    }

    }

    接下来的问题就是等待并行计算的结果了:

    exec.shutdown();//关闭,但是会继续执行已提交的任务

    exec.awaitTermination(Long.Max_VALUE,TimeUnit.SECONDS);//等待

    return resultQueue;

  • 相关阅读:
    U-Boot新手入门
    安装交叉编译工具
    Makefile 工程管理
    gcc基本用法
    poj 3264 Balanced Lineup
    hdoj 1166 敌兵布阵
    poj 1363 Rails
    poj 1028 Web Navigation
    zoj 3621 Factorial Problem in Base K
    poj1861最小生成树
  • 原文地址:https://www.cnblogs.com/macula7/p/1960461.html
Copyright © 2011-2022 走看看