美文网首页
Runnable Callable Future FutureT

Runnable Callable Future FutureT

作者: imbird | 来源:发表于2017-04-08 13:51 被阅读0次

这篇文章不错Mark一下

http://www.cnblogs.com/dolphin0520/p/3949310.html

### Runnable

众所周知,实现线程的两种方式 1、extends Thread 2、implements Runnable

该接口只有一个方法就是

```java

public interface Runnable {

public abstract void run();

}

```

### Callable

因为runnable 是没有返回值的,所以有些场景会不是很方便,Callable解决了这个问题

该接口也只有一个方法,但它的run方法有了返回值

``` java

public interface Callable<T>{

T run() throws Exeception;

}

```

### Future

Future就是对于具体的Runnable或者Callable任务的执行结果进行取消、查询是否完成、获取结果。必要时可以通过get方法获取执行结果,该方法会阻塞直到任务返回结果

### FutureTask

FutureTask 是一个类,前三者是接口,FutureTask 是Future的唯一实现类

``` java

public class FutureTask<T> implements RunnableFuture<T>

```

再看RunnableFuture<T>这个接口

``` java

public interface RunnableFuture implements Runnable , Future<T>{

void run();

}

```

`总结:runnable callable 都是线程类的接口,只是前者没有返回值,后者有返回值,还会抛出异常

future 类似于线程的辅助类,可以,查看返回值、取消线程,查看线程状态等,callable返回值的体现也是和future配合使用。

future 和 future 的区别,

executorService submit callable的时候  需要通过返回值future<T>来得到返回值

executorService submit futureTask 不需要通过future<T>来获取返回值,直接submit后,通过futureTask.get方法来获取返回值

`

相关文章

网友评论

      本文标题:Runnable Callable Future FutureT

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