java进阶 - 线程池 - A - ExecutorService

标注:这是一条不归路,想看的请按照 XXX-OOO-英文字母-ZZZ 英文字母的顺序不要命的走下去

Doug Lea 牛逼!!!

好,开始了,画了张小图

java进阶 - 线程池 - A - ExecutorService_第1张图片

1.先要说一下线程池 垫在最屁股底下的东西

Executor:这个接口就一个方法 

java进阶 - 线程池 - A - ExecutorService_第2张图片

目前就我不成熟的看法:这个方法是为了 用一下接口特性: 维护性, 扩展性

2.然后再看一下上面一层薄膜

哦哟,也是个接口,经过我吃了个中饭之后,没想出来使用了什么设计模式!

java进阶 - 线程池 - A - ExecutorService_第3张图片

好像没什么好说的,吃个大辣皮,把接口方法给简单介绍以下吧

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> tasks) -- 提交一批线程任务执行,返回所有任务的结果 List>

10. List> invokeAll(Collection> tasks, long timeout, TimeUnit unit) -- 提交一批线程任务执行,设置超时时间 List>

11.  invokeAny(Collection> tasks) -- 提交一批任务中的某一个,返回这一个的结果

12. invokeAny(Collection> tasks, long timeout, TimeUnit unit) -- 提交一批任务中的某一个,设置超时时间,返回结果

3. 这个接口-ScheduledExecutorService - 针对 schedule 定时任务搞了点花头精

java进阶 - 线程池 - A - ExecutorService_第4张图片

1. 提交runnable任务,延迟运行,返回 null

2. 提交callable任务,延迟运行, 有返回值

3. 提交runnable任务,延迟 initialDealy 之后,开始周期性的执行该任务,每period时间执行一次如果任务异常则退出。如果取消任务或者关闭线程池,任务也会退出, 如果任务执行一次的时间大于周期时间,则任务执行将会延后执行,而不会并发执行

4.  提交Runnable任务延迟了initialDelay时间后,开始周期性的执行该任务,以后每两次任务执行的间隔是delay
     如果任务异常则退出。如果取消任务或者关闭线程池,任务也会退出

 

看到这儿,依旧平平无奇,下一章节讲述--AbstractExecutorService  next -->

 

你可能感兴趣的:(java,进阶)