标注:这是一条不归路,想看的请按照 XXX-OOO-英文字母-ZZZ 英文字母的顺序不要命的走下去
目录
3. 这个接口-ScheduledExecutorService - 针对 schedule 定时任务搞了点花头精
Doug Lea 牛逼!!!
好,开始了,画了张小图
1.先要说一下线程池 垫在屁股最底下的东西
Executor:调用线程异步执行runnable传入的方法体
目前就我不成熟的看法:这个方法是为了 用一下接口特性: 维护性, 扩展性
2.然后再看一下上面一层薄膜
嗯,也是个接口,过了大约吃了个中饭的时间之后,没想到用了什么设计模式!
好像没什么好说的,吃个大辣皮,把接口方法给简单介绍以下吧
1. shutdown --- 有序关闭,已有任务继续执行,不接收新任务
2. shutdownNow -- 尝试停止所有正在执行任务,停止处理等待任务,返回等待执行的任务列表
3. isShutdown -- 如果此执行程序已关闭,则返回true
4. isTerminated -- 如果 线程池 shutdown 后所有任务都已完成,则返回true
5. awaitTermination -- 在关闭请求、当前线程中断、或超时发生之后,等待所有任务完成执行
6. submit(Callable) -- 提交线程任务,返回 Future 值 这里我单独写了一篇 Future的简单介绍
7. submit(Runnable,T) -- 提交线程任务,返回 Future 值
8. submit(Runnable) -- 提交线程任务,不返回值
9. invokeAll(Collection<? extends Callable<T>> tasks) -- 提交一批线程任务执行,返回所有任务的结果 List<Future<T>>
10. List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) -- 提交一批线程任务执行,设置超时时间 List<Future<T>>
11. invokeAny(Collection<? extends Callable<T>> tasks) -- 提交一批任务中的某一个,返回这一个的结果
12. invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) -- 提交一批任务中的某一个,设置超时时间,返回结果
3. 这个接口-ScheduledExecutorService - 针对 schedule 定时任务搞了点花头精
1. 提交runnable任务,延迟运行,返回 null
2. 提交callable任务,延迟运行, 有返回值
3. 提交runnable任务,延迟 initialDealy 之后,开始周期性的执行该任务,每period时间执行一次如果任务异常则退出。如果取消任务或者关闭线程池,任务也会退出, 如果任务执行一次的时间大于周期时间,则任务执行将会延后执行,而不会并发执行
4. 提交Runnable任务延迟了initialDelay时间后,开始周期性的执行该任务,以后每两次任务执行的间隔是delay
如果任务异常则退出。如果取消任务或者关闭线程池,任务也会退出
看到这儿,依旧平平无奇,下一章节讲述--AbstractExecutorService next -->