转载

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/
正文到此结束
Loading...