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;

  • 相关阅读:
    ABP文档
    SqlServer英文单词全字匹配
    npm不是以管理身份运行遇到的问题
    concurrenthashmap jdk1.8
    HashSet源码分析 jdk1.6
    Iterator设计模式--jdk1.7
    代理模式
    高并发下的HashMap,ConcurrentHashMap
    HashMap源码分析jdk1.6
    Stack&Vector源码分析 jdk1.6
  • 原文地址:https://www.cnblogs.com/macula7/p/1960461.html
Copyright © 2011-2022 走看看