public void test() throws ExecutionException, InterruptedException { ExecutorService executorService =Executors.newFixedThreadPool(2); long s = System.currentTimeMillis(); Callable<String> c = new Callable<String>() { @Override public String call() throws Exception { return a (); } }; Callable<String> c2 = new Callable<String>() { @Override public String call() throws Exception { return a2 (); } }; FutureTask<String> ft = new FutureTask<>(c); FutureTask<String> ft2 = new FutureTask<>(c2); executorService.submit(ft); executorService.submit(ft2); System.err.println(ft.get()); System.err.println(ft2.get()); long e = System.currentTimeMillis(); System.err.println(e-s); }