Java源码系列(21) — Runnable & Callable

Runnable

Runnable接口由需被线程执行的类继承实现,实现类需实现接口中无参数的方法 run

此接口为那些希望在激活时执行代码的对象提供公共协议。例如 Thread
实现 Runnable
接口,当 Thread
激活之后表示线程已经启动且尚未停止。

@FunctionalInterface
public interface Runnable {
    // 当对象实现Runnable接口并用于创建线程时,
    // 在线程启动时,会引起run方法在独立执行的线程中执行
    public abstract void run();
}

其次, Runnable
也表明实现类在不是 Thread
的子类的情况下,也能变得活跃。实现 Runnable
接口的类不继承 Thread
,可把本实例传递给 Thread
实例作为运行目标。在多数情况下,如果不需要重写 Thread
方法,应尽量使用 Runnable

Callable

这是返回运行结果值或抛出异常的任务。实现者需定义一个没有参数名为 call
的方法。

Callable和 Runnable
接口有点类似,均设计为让类实例运行在其他线程上。但是, Runnable
不会返回结果,且不能抛出受检异常。

Executors类包含一些工具方法,能把其他普通类型转换为 Callable
。例如:把 Runnable
转换为 Callable

@FunctionalInterface
public interface Callable<V> {
    // 计算获得结果,或在无法运行时抛出异常
    // V为计算后结果的类型
    V call() throws Exception;
}
  • 上一篇

    Java源码系列(19) — LinkedBlockingDeque

原文 

http://phantomvk.coding.me/2018/11/07/Runnable_Callable/

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Java源码系列(21) — Runnable & Callable

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址