Runnable接口由需被线程执行的类继承实现,实现类需实现接口中无参数的方法 run 。
此接口为那些希望在激活时执行代码的对象提供公共协议。例如 Thread 实现 Runnable 接口,当 Thread 激活之后表示线程已经启动且尚未停止。
@FunctionalInterface public interface Runnable { // 当对象实现Runnable接口并用于创建线程时, // 在线程启动时,会引起run方法在独立执行的线程中执行 public abstract void run(); }
其次, Runnable 也表明实现类在不是 Thread 的子类的情况下,也能变得活跃。实现 Runnable 接口的类不继承 Thread ,可把本实例传递给 Thread 实例作为运行目标。在多数情况下,如果不需要重写 Thread 方法,应尽量使用 Runnable 。
这是返回运行结果值或抛出异常的任务。实现者需定义一个没有参数名为 call 的方法。
Callable和 Runnable 接口有点类似,均设计为让类实例运行在其他线程上。但是, Runnable 不会返回结果,且不能抛出受检异常。
Executors类包含一些工具方法,能把其他普通类型转换为 Callable 。例如:把 Runnable 转换为 Callable
@FunctionalInterface public interface Callable<V> { // 计算获得结果,或在无法运行时抛出异常 // V为计算后结果的类型 V call() throws Exception; }
上一篇
Java源码系列(19) -- LinkedBlockingDeque