首页 > 文章列表 > Java runnable和callable的异同

Java runnable和callable的异同

java runnable callable
411 2022-08-06

1、相同点

两者都是接口

两者都需要调用Thread.start启动线程

2、不同点

callable的核心是call()方法,允许返回值,runnable的核心是run()方法,没有返回值

call()方法可以抛出异常,但是run()方法不行

callable和runnable都可以应用于executors,thread类只支持runnable

3、实例

Runnable和Callable的接口定义

@FunctionalInterface
public interface Runnable {
    /**
     * When an object implementing interface <code>Runnable</code> is used
     * to create a thread, starting the thread causes the object's
     * <code>run</code> method to be called in that separately executing
     * thread.
     * <p>
     * The general contract of the method <code>run</code> is that it may
     * take any action whatsoever.
     *
     * @see     java.lang.Thread#run()
     */
    public abstract void run();
}
@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;
}