串行执行转为并行执行

void processSeq(){
    
    
  for(Element e:elements){
    
    
    process(e);
  }
}

void processInPatallel(Executor exec,List<Element> elements){
    
    
  for(final Element e : element){
    
    
    exec.execute(
      new Runnable(){
    
    
        public void run(){
    
    
          process(e);
        }
      }
    );
  }
}

串行递归转位并行递归

public<T> void seqRecursive(){
    
    
  for(Node<T> n: nodes){
    
    
    results.add(n.compute());
    seqRecursive(n.getChildren(),results);
  }
}

public<T> void parallelRecursive(final Executor exec,List<T> nodes,final Collection<T> results){
    
    
  for(final Node<T> n : nodes){
    
    
    exec.execute(
      new Runnable(){
    
    
        public void run(){
    
    
          results.add(n.compute());
        }
      }
    );
    parallelRecursive(exec,n.getChildren(),results);
  }
}

猜你喜欢

转载自blog.csdn.net/weixin_37632716/article/details/118861392