package ThreadPoolTest; import java.io.File; import java.util.Scanner; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.FutureTask; import java.util.concurrent.ThreadPoolExecutor; public class ThreadPoolTest { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("Enter base directory(e.g. /usr/local/jdk5.0/src):"); String directory = in.nextLine(); System.out.println("Enter keyword(e.g. volatile):"); String keyword = in.nextLine(); ExecutorService pool = Executors.newCachedThreadPool(); MatchCounter counter = new MatchCounter(new File(directory), keyword,pool); Future<Integer> result = pool.submit(counter); try { System.out.println(result.get() + " matching files."); } catch(ExecutionException e) { e.printStackTrace();} catch(InterruptedException e) {} pool.shutdown(); int largestPoolSize = ((ThreadPoolExecutor) pool).getLargestPoolSize(); System.out.println("largest pool size=" + largestPoolSize); } }