我們平時接觸到的多線程Thread,Runnable,這兩種方式不能返回線程執行後的結果。
假如有Thread1、Thread2、Thread3三個線程分別統計信息,所有線程統計完畢交給Thread4匯總,應當如何實現?
Callable和Future,前者產生結果,後者拿到結果。
Callable和Future 推薦一篇不錯的博客:http://blog.csdn.net/ghsau/article/details/7451464
public class GreyStartServlet extends HttpServlet { @Override public void init() throws ServletException { FutureTask<String> task = new FutureTask<String>(new Callable<String>() { @Override public String call() throws Exception { start(); // 使用另一個線程來執行該方法,會避免占用Tomcat的啟動時間 return "Collection Completed"; } }); new Thread(task).start(); } // 希望Tomcat啟動結束後執行的方法 private static void start() throws Exception { Thread.sleep(1000);
} }