java线程

Runnable与Callable

2018-11-27  本文已影响0人  传说中的大哥

Callable:

@FunctionalInterface
public interface Callable<V> {
    /**
     * Computes a result, or throws an exception if unable to do so.
     *
     * @return computed result
     * @throws Exception if unable to compute a result
     */
    V call() throws Exception;
}

Runnable:

package java.lang;

@FunctionalInterface
public interface Runnable {
    void run();
}

区别:
相同点:

1.都是接口。
2.都可用来编写多线程程序。
3.都需要调用Thread.start()启动线程。

不同点:

1.实现Callable接口的任务线程能返回执行结果;而实现Runnable接口的任务线程不能返回结果;
2.Callable接口的call()方法允许抛出异常;而Runnable接口的run()方法的异常只能在内部消化,不能继续上抛;
3.Callable接口支持返回执行结果,此时需要调用FutureTask.get()方法实现,此方法会阻塞主线程直到获取‘将来’结果;当不调用此方法时,主线程不会阻塞!

上一篇 下一篇

猜你喜欢

热点阅读