Index: src/java/org/apache/lucene/search/ParallelMultiSearcher.java =================================================================== --- src/java/org/apache/lucene/search/ParallelMultiSearcher.java (revision 940588) +++ src/java/org/apache/lucene/search/ParallelMultiSearcher.java (working copy) @@ -42,19 +42,25 @@ * or {@link #search(Query,Filter,int)} methods. */ public class ParallelMultiSearcher extends MultiSearcher { - private final ExecutorService executor; private final Searchable[] searchables; private final int[] starts; - /** Creates a {@link Searchable} which searches searchables. */ + /** Creates a {@link Searchable} which searches searchables with the default + * executor service (a cached thread pool). */ public ParallelMultiSearcher(Searchable... searchables) throws IOException { + this(Executors.newCachedThreadPool(new NamedThreadFactory(ParallelMultiSearcher.class.getSimpleName())), searchables); + } + + /** + * Creates a {@link Searchable} which searches searchables with the specified ExecutorService. + */ + public ParallelMultiSearcher(ExecutorService executor, Searchable... searchables) throws IOException { super(searchables); this.searchables = searchables; this.starts = getStarts(); - executor = Executors.newCachedThreadPool(new NamedThreadFactory(this.getClass().getSimpleName())); + this.executor = executor; } - /** * Executes each {@link Searchable}'s docFreq() in its own thread and waits for each search to complete and merge * the results back together.