美文网首页java线程
Runnable与Callable

Runnable与Callable

作者: 传说中的大哥 | 来源:发表于2018-11-27 15:01 被阅读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()方法实现,此方法会阻塞主线程直到获取‘将来’结果;当不调用此方法时,主线程不会阻塞!

相关文章

网友评论

    本文标题:Runnable与Callable

    本文链接:https://www.haomeiwen.com/subject/gmvgqqtx.html