Java并发编程实践之Executor框架

java中任务的抽象不是Thread,而是Executor!

 

public interface Executor {
    void execute(Runnable command);
}
 

 

怎么理解这句话呢,可以认为Thread是任务的执行,而无法代表任务的抽象,一个任务的抽象应该包含任务的执行策略来描述“What, Where, When, How”等问题:

      在什么(What)线程中执行任务?

      任务按照什么(What)顺序执行?

      有多少个(How Many)任务能并发执行

      在队列中有多少个(How Many)任务在等待执行

      如果系统由于过载而需要拒绝一个任务,那么应该选择哪一个(Which)任务?如何(How)通知应用程序有任务被拒绝?

      在执行一个任务之前或之后,应该进行哪些(What)动作?

 

在Executor中提供个几个线程池的实现,来帮助完成上述设计的执行策略,他们可以通过Executors的静态工厂方法之一来创建,这些方法分别是:newFixedThreadPool, newCachedThreadPool, newSingleThreadExecutor, newScheduledThreadPool.

 

其中newFixedThreadPool将创建一个固定长度的线程池,创建之后规模不在变化

newCachedThreadPool 线程池规模不受限制

newSingleThreadExecutor 单个线程串行执行任务

newShceduledThreadPool 创建一个固定长度的线程池,而且以延迟或定时的方式来执行任务

 

你可能感兴趣的:(executor)