http://blog.csdn.net/chenchaofuck1/article/details/51606224
demo

package executor; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class ExecutorTest { public static void main(String[] args) { methodB(); } static void methodB(){ ExecutorService newSingleThreadExecutor = Executors.newSingleThreadExecutor(); Future<String> submit = newSingleThreadExecutor.submit(new Callable<String>() { @Override public String call() throws Exception { // TODO Auto-generated method stub return "success"; } }); try { System.out.println(submit.get()); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ExecutionException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void methodA(){ ExecutorService newCachedThreadPool = Executors.newCachedThreadPool(); for(int i=0;i<5;i++){ newCachedThreadPool.execute(new Runnable() { @Override public void run() { // TODO Auto-generated method stub System.out.println("test"); } }); } while(!newCachedThreadPool.isTerminated()){ System.out.println(""+newCachedThreadPool); } } }