code: public static <S extends Sequence<C>, C extends Compound> double[] runPairwiseScorers(
  			List<PairwiseSequenceScorer<S, C>> scorers) {
  		int n = 1, all = scorers.size();
  		List<Future<Double>> futures = new ArrayList<Future<Double>>();
  		for (PairwiseSequenceScorer<S, C> scorer : scorers) {
  			futures.add(ConcurrencyTools.submit(new CallablePairwiseSequenceScorer<S, C>(scorer),
  					String.format("Scoring pair %d of %d", n++, all)));
  		}
  		List<Double> results = getListFromFutures(futures);
  		double[] scores = new double[results.size()];
  		for (int i = 0; i < scores.length; i++) {
  			scores[i] = results.get(i);
  		}
  		return scores;
  	}
docs: Factory method to run a list of scorers concurrently.  This method runs the scorers in parallel by submitting
  all of the scoring tasks to the shared thread pool of the {@link ConcurrencyTools} utility.
  
  @param <S> each {@link Sequence} of an alignment pair is of type S
  @param <C> each element of an {@link AlignedSequence} is a {@link Compound} of type C
  @param scorers list of scorers to run
  @return list of score results from running scorers