创建线程的方法及区别

时间:2021-04-16 12:18:32   收藏:0   阅读:0

创建线程的方法及区别

方式一:继承Thread类

run()方法和start()方法的区别?

run():封装线程执行的代码,直接调用,相当于普通方法的调用

start():启动线程;然后由JVM调用此线程的run()方法

方式二:实现Runnable接口

方式三: 实现Callable接口

三种实现方式的对比

Runnable和Callable的区别

  1. Callable规定的方法是call(),Runnable规定的方法是run().

  2. Callable的任务执行后可返回值,而Runnable的任务是不能返回值得

  3. call方法可以抛出异常,run方法不可以

  4. 运行Callable任务可以拿到一个Future对象,Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。计算完成后只能使用 get 方法来获取结果,如果线程没有执行完,Future.get()方法可能会阻塞当前线程的执行;如果线程出现异常,Future.get()会throws InterruptedException或者ExecutionException;如果线程已经取消,会跑出CancellationException。取消由cancel 方法来执行。isDone确定任务是正常完成还是被取消了。一旦计算完成,就不能再取消计算。如果为了可取消性而使用 Future 但又不提供可用的结果,则可以声明Future<?> 形式类型、并返回 null 作为底层任务的结果。

  5.  

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!