线程实现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";
	}
}

猜你喜欢

转载自blog.csdn.net/qq_43045898/article/details/83143106