1. 程式人生 > >執行緒實現callable介面和runnable介面的區別

執行緒實現callable介面和runnable介面的區別

Callable和Runnable的區別:

  1. 返回值:Callable有返回值,Runnable沒有返回值
  2. 異常:Runnable沒有容錯機制,意味著如果出現異常必須立即處理;Callable有容錯機制,意味著出現異常之後可以向上丟擲
  3. 啟動方式: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";
	}
}