Java多线程之Callable、Future和FutureTask

时间:2021-06-03 17:29:39

ExecutorService、Callable、Future实现有返回结果的线程
返回结果的线程是在JDK1.5中引入的新特征,有了这种特征就不需要再为了得到返回值而大费周折了。而且自己实现了也可能漏洞百出。
可返回值的任务必须实现Callable接口。类似的,无返回值的任务必须实现Runnable接口。
执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了。
注意:get方法是阻塞的,即:线程无返回结果,get方法会一直等待。
再结合线程池接口ExecutorService就可以实现传说中有返回结果的多线程了。

ExecutorService

public interface ExecutorService extends Executor
public interface Executor

Callable

public interface Callable<V> 

Runnable

public interface Runnable

Future

public interface Future<V> 

FutureTask

public class FutureTask<V> implements RunnableFuture<V> 
public interface RunnableFuture<V> extends Runnable, Future<V> 
public interface Runnable 
public interface Future<V>