Java多线程(四)实现多线程的三种方法之JUC的Callable接口

什么是Callable:

  • Callable是java.util.concurrent的一个接口,常常需要与java.util.concurrent.Executor类一起使用.
  • java.util.concurrent简称JUC.

Callable与Runnable的异同.

不同点

  • Runnable没有返回值;Callable可以返回执行结果,是个泛型,和Future、FutureTask配合可以用来获取异步执行的结果.
  • Callable接口的call()方法允许抛出异常;Runnable的run()方法异常只能在内部消化,不能往上继续抛.

注:Callalbe接口支持返回执行结果,需要调用FutureTask.get()得到,此方法会阻塞主进程的继续往下执行,如果不调用不会阻塞。

以下是官方文档的解释:

 A Runnable, however, does not return a result and cannot throw a checked exception.

相同点:

  • 都是接口
  • 都可以编写多线程程序
  • 都采用Thread.start()启动线程

Callable接口的定义

public interface Callable<V> {
    V call() throws Exception;
}

Runnable接口的定义

public interface Runnable {
    public abstract void run();
}

参考:

https://www.cnblogs.com/kaituorensheng/p/9502968.html?utm_source=debugrun&utm_medium=referral

原文地址:https://www.cnblogs.com/majestyking/p/12445736.html