Executor框架学习

        Executor:接口,只定义了一个接收Runnable对象的方法executor。

void execute(Runnable command);
ExecutorService:是Executor的扩展接口,增加了生命周期管理的方法,一个异步Task执行状况返回Future的方法,以及多个Task集合的方法。
 
void shutdown();
List<Runnable> shutdownNow();
boolean isShutdown();
boolean isTerminated();
boolean awaitTermination(long timeout, TimeUnit unit);
<T> Future<T> submit(Callable<T> task);
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
ExecutorService有两个实现,一个是接口一个是抽象类
AbstractExecutorService:ExecutorService抽象了一层的抽象类,设置了执行方法的默认的基本实现
ThreadPoolExecutor:线程池,可以通过调用Executors以下静态工厂方法来创建线程池并返回一个ExecutorService对象。
 
public ThreadPoolExecutor(int corePoolSize,// 初始线程数
                              int maximumPoolSize,// 最大线程数
                              long keepAliveTime,// 空闲时间超过keepAliveTime时将被终止
                              TimeUnit unit, // keepAliveTime的时间单位
                              BlockingQueue<Runnable> workQueue,// 超过最大线程数的线程放入阻塞队列
                              ThreadFactory threadFactory,// ThreadFactory创建新线程,默认使用defaultThreadFactory创建线程
                              RejectedExecutionHandler handler) //定义处理被拒绝任务的策略

ScheduledExecutorService:ExecutorService的子接口,主要是实现调度实现方法的定义
public ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit);
public <V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit);
public ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit);
public ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit);


ScheduledThreadPoolExecutor:ScheduledExecutorService的实现,一个可定时调度任务的线程池
class ScheduledThreadPoolExecutor extends ThreadPoolExecutor implements ScheduledExecutorService
 public ScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory threadFactory, RejectedExecutionHandler handler) {
        // 此处调用super的 也就是ThreadPoolExecutor的构造方法,即该线程池也是基于ThreadPoolExecutor的实现
        super(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS, new DelayedWorkQueue(), threadFactory, handler); 



 

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页