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;

  • 相关阅读:
    Texture转Texture2D
    虚拟化 -- kvm简介
    虚拟化
    数据库
    openstack共享组件(1)------ NTP 时间同步服务
    openstack
    Linux基础命令
    第七章 Python文件操作
    第六章 Python流程控制
    老吴Python宝典之——Python字典&集合(第五章 )
  • 原文地址:https://www.cnblogs.com/macula7/p/1960461.html
Copyright © 2011-2022 走看看