java.util.concurrent / Executor 相关接口、类 关系整理(一)未完待续...

java.util.concurrent / Executor 相关接口、类 关系整理(一)未完待续...

ExecutorService接口方法

1、execut(Runnable)  无返回值

2、submit(Runnable) 无返回值,但会返回一个Future对象可以用来检查是否执行完毕

3、invokeAny(一系列的Callable接口或其子接口的实例对象) 随机返回其中一个Callable对象的结果,只能表明其中一个已执行结束。

4、invokeAll(一系列的Callable接口或其子接口的实例对象)  返回一个Future 可以获得所有的callable执行结果。

5、shutDown() 结束空闲线程,shutDown之前提交的任务可以继续执行

6、shutDownNow() 立即结束大部分线程,这里不是所有,能力不够


ScheduledExecutorService接口方法

1、schedule(Runnable task,long delay,TimeUnit timeunit) 

参数1:执行谁。  参数2:过多久执行。   参数3:时间单位。

2、schedule(Callable task,long delay,TimeUnit timeunit)

跟 上一个的区别: 一个Runnable 不带返回值,一个Runnable 带返回值

3、scheduleAtFixedRate(Runnable,long initialDelay,long period,TimeUnit timeunit)

参数1:执行谁。  参数2:过多久执行。   参数3:过多久执行一次。  参数4:时间单位。

period:前一个执行的开始和下一个执行开始的间隔时间

注意:如果一个线程没有在指定的时间间隔内执行完,那么不会执行下一个线程。执行完了,再执行下一个线程,计划任务在同一时间,不会有多个线程同时执行。

4、scheduleWithAtFixedRate(Runnable,long initialDelay,long period,TimeUnit timeunit)

跟上一个的区别: period 的定义不同   :前一个执行的结束和下一个执行结束的间隔时间

shutDown和shutDownNow 同上。



ThreadPoolExecutor线程池执行者

就是用 线程池内部的线程 来执行任务(Callable或 Runnable)

构造方法参数解释:

1、corePoolSize : 池中线程数

2、maximumPoolSize:池中允许最大线程数

3、keepAliveTime :当前线程数>corePoolSize 。空闲线程等待任务的最长时间

4、unit : 时间单位

5、workQueue :执行前任务队列。

6、threadFactory :可以实现 线程工场接口,对线程属性进行配置

7、RejectedExecutionHandler: 线程池中线程全部被使用,会执行的方法