Java多线程实现方式主要有四种:
继承Thread类、 实现Runnable接口、
实现Callable接口通过FutureTask包装器来创建Thread线程、
使用ExecutorService、Callable、Future实现有返回结果的多线程。
其中前两种方式线程执行完后都没有返回值,后两种是带返回值的。
Runnable和Callable的区别
Runnable接口
public interface Runnable {
void run();
}
1
2
3
Callable接口
public interface Callable<V> {
V call() throws Exception;
}
1
2
3
Runnable和Callable的区别
Runnable执行方法是run(),Callable是call()
实现Runnable接口的任务线程无返回值;实现Callable接口的任务线程能返回执行结果
call方法可以抛出异常,run方法若有异常只能在内部消化
注意
Callable接口支持返回执行结果,需要调用FutureTask.get()方法实现,此方法会阻塞主线程直到获取结果;当不调用此方法时,主线程不会阻塞!
如果线程出现异常,Future.get()会抛出throws InterruptedException或者ExecutionException;如果线程已经取消,会爬出CancellationException
---------------------
作者:刘运召
来源:CSDN
原文:https://blog.csdn.net/Liu_yunzhao/article/details/78504287
版权声明:本文为博主原创文章,转载请附上博文链接!
原创声明,本文系作者授权云+社区发表,未经许可,不得转载。
如有侵权,请联系 yunjia_community@tencent.com 删除。
我来说两句