【Java并发编程】Executor Interfaces
来源:互联网 发布:通达信原油看盘软件 编辑:程序博客网 时间:2024/06/05 22:38
总括
在java.util.concurrent包下,定义了三个Executor Interfaces。
1. Executor接口,一个简单的接口,支持启动一个新任务。
2. ExecutorService接口,继承了Executor接口,提供了管理任务和Executor本身生命周期的相关定义。
3. ScheduledExecutorService,继承了ExecutorService,提供了周期性执行任务的机制的接口的定义
Executor接口
public interface Executor { void execute(Runnable command);}
Executor接口只有一个execute方法,该接口是设计来直接可以替换Thread的方式的。这里r为Runnable类,e为Executor接口的一个实例,具体是什么我们这里不关心。
(new Thread(r)).start();
e.execute(r);
可以看出,Executor的定义没有什么特别的。我们一定要明白一点,当我们最初使用Thread来执行一个Runnable任务时,Runnable本身和多线程一点关系都没有,它只是被Thread利用的一个接口而已,真正的具备线程的功能是Thread类。回过头来,我们再说Executor接口,这个接口就如同Runnable接口一样,并没有什么神奇之处,这个接口本身不是线程,而是线程利用的一个已知的接口而已。换句话说,如果Executor的实例实在哪一个线程中调用了execute方法,那么相应的任务就运行在那个线程。
ExecutorService接口
public interface ExecutorService extends Executor { void shutdown(); List<Runnable> shutdownNow(); boolean isShutdown(); boolean isTerminated(); boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException; <T> Future<T> submit(Callable<T> task); <T> Future<T> submit(Runnable task, T result); Future<?> submit(Runnable task); ··· ···}
ExecutorService提供了一种执行任务的新方式,submit方法接受一个Callable的实例,我们熟悉的Runnable接口中定义的方法run并不反回任何参数,而Callable接口中定义的方法call是有返回值的。submit方法返回值是Future接口,Future接口定义了任务调度的逻辑,和获取Callable对应执行结果的相关get方法。
ExecutorService提供了关闭Executor的方法,要想立刻关闭,所有的任务都要很好地处理中断操作。
ScheduledExecutorService接口
ScheduledExecutorService接口比ExecutorService提供了延迟和周期性反复执行任务的接口:scheduleAtFixedRate和scheduleWithFixedDelay。
- 【Java并发编程】Executor Interfaces
- java并发编程-Executor框架
- java并发编程-Executor框架
- java并发编程-Executor框架
- java并发编程-Executor框架
- java并发编程-Executor框架
- java并发编程-Executor框架
- java并发编程-Executor框架
- java并发编程-Executor框架
- java并发编程-Executor框架
- java并发编程-Executor框架
- java并发编程-Executor框架
- java并发编程只Executor
- Java并发编程:Executor框架
- java并发编程-Executor框架
- java并发编程-Executor框架
- java并发编程-Executor框架
- java并发编程-Executor框架
- 1087. All Roads Lead to Rome (30)
- dubbo源码深度解读四之remoting模块
- 中缀转后缀——逆波兰表示
- 【C语言】条件编译
- SELECT中OPTION元素的显示隐藏
- 【Java并发编程】Executor Interfaces
- Android 集成 FFmpeg (一) 基础知识及简单调用
- CSDN上怎么粘贴有格式的代码
- 【自考】网络第四章总结
- mac 反编译apk
- 复习指针数组以及如何把二维数组赋值给二维指针
- 【shell】xargs及常见用法
- bzoj P1036 [ZJOI2008]树的统计Count
- 【C语言】编写模拟人员信息系统(结构体,文件)