关于java的future和Executor接口的理解
来源:互联网 发布:淘宝删中差评的方法 编辑:程序博客网 时间:2024/05/17 01:19
在创建线程的方法中,一种是实现Runnable接口的方式,但是这种方式是没有办法获取返回值和捕获异常的,所以这里来说说可以让线程返回执行结果的Future,Callable,Executor接口。
首先说下Callable接口,这个接口只有一个方法如下:
public V call();
和Runnable不同的是,Thread类不会接受一个Callable接口的实现来实现一个线程,而是需要通过Executor接口的实现类来实现。通常是使用Executors这个类。在Executors这个类中,使用static方法,可以获取不同类型的Executor接口的实现。下面可以简单的梳理下关于Executor接口的逻辑关系。
首先说下Callable接口,这个接口只有一个方法如下:
public V call();
和Runnable不同的是,Thread类不会接受一个Callable接口的实现来实现一个线程,而是需要通过Executor接口的实现类来实现。通常是使用Executors这个类。在Executors这个类中,使用static方法,可以获取不同类型的Executor接口的实现。下面可以简单的梳理下关于Executor接口的逻辑关系。
Executor接口中只有一个方法:public void execute(Runnable command),理解来的意思就是执行这个command任务。至于是在一个新的线程还是线程池还是其他的方式,那就要看Executor接口的具体实现了。ExecutorService接口扩充了Executor,新增了许多新的方法,ScheduledExecutorService接口再次扩充了ExecutorService接口,新增了线程调度的相关方法。一些类实现了这些接口,并且可以通过前面所说的Executors这个类,通过static方法获取这些接口的实现类,比如ThreadPoolExecutorScheculedThreadPoolExecutor。
下面说下Future接口,这个接口定义的方法如下,它有一个简单的实现类FutureTask类,可以通过这个类来具体的看下这个接口的设计意图。
boolean cancel(boolean mayInterruptIfRunning)
V get()
V get(long timeout, TimeUnit unit)
boolean isCancelled()
boolean isDone()
从方法中可以看出,我们可一个通过get方法获取线程的计算结果,也可以通过cancel方法来中止这个线程,api文档中指出,如果调用get方法这个线程还没有完成,那么block线程。而且如果只是想用Future的取消线程的方法,那么可以直接返回null。
阅读全文
0 0
- 关于java的future和Executor接口的理解
- Executor 和 Future 的例子
- Java并发编程-Executor框架之Callable和Future接口
- Java并发编程-Executor框架之Callable和Future接口
- 关于Executor框架相关接口和类的作用
- Java中利用Future和callable接口监测异步线程的理解
- Java中Executor接口的说明和使用
- Java Future接口、Future模式理解
- Future接口和Callable接口的使用
- Java多线程之Callable和Future接口的实现
- Future、Callable和Executor
- Callable、Runnable、Future、Executor的详细使用方法
- 关于Java中继承和接口的理解
- 关于java抽象类和抽象接口的理解
- 关于java接口和抽象类的理解
- java的Future和FutureTask
- java的Future和FutureTask
- java的Future和FutureTask
- java基础知识笔记--1
- 二维码扫描灵敏度
- slf4j和log4j
- DirectShow filter相关
- html 引入公共的头部和底部
- 关于java的future和Executor接口的理解
- JAVA操作Hbase管理类HbaseManage基本详细操作
- POJ 1392 Ouroboros Snake 笔记
- Kylin实践之使用Hive视图
- Python 字典(Dictionary)
- android studio配置kotlin环境
- MyBatis框架——mybatis插入数据返回主键(mysql、oracle)
- 00. 定制springboot启动图案
- 简单二级菜单制作