執行緒實現callable介面和runnable介面的區別
阿新 • • 發佈:2018-11-10
Callable和Runnable的區別:
- 返回值:Callable有返回值,Runnable沒有返回值
- 異常:Runnable沒有容錯機制,意味著如果出現異常必須立即處理;Callable有容錯機制,意味著出現異常之後可以向上丟擲
- 啟動方式:Runnable可以通過Thread來啟動,也可以通過執行緒池的execute、submit來處理;Callable執行緒只能通過執行緒池的submit來處理`
執行緒實現callable的藉口程式碼舉例:
public class ThreadPoolCallable { public static void main(String[] args) throws InterruptedException, ExecutionException { ExecutorService es = Executors.newCachedThreadPool(); // 表示將執行緒提交給執行緒池進行處理 // 將處理結果封裝成了一個Future物件 // submit可以處理Callable和Runnable執行緒 Future<String> f = es.submit(new CDemo()); System.out.println(f.get()); es.shutdown(); } } // 只能利用執行緒池來執行 class CDemo implements Callable<String> { @Override public String call() throws Exception { return "\\index.html"; } }