Java多线程框架Executor

线程池

为了避免系统频繁地创建和销毁线程,我们可以让创建的线程进行复用。

Executor框架

为了能够更好的控制多线程,JDK在Java 5之后提供了一套Executor框架,通过该框架来控制线程的启动、执行和关闭,可以简化并发编程的操作。
Java多线程框架Executor_第1张图片
以上成员均在java.util.concurrent包下,是JDK并发包的核心类。其中ThreadPoolExecutor 表示一个线程池,Executors 类则扮演着线程池工厂的角色,通过Executors可以取得一个拥有特定功能的线程池。从UML图中亦可知,ThreadPoolExecutor类实现了Executor接口,因此通过这个接口,任何Runnable的对象都可以背ThreadPoolExecutor线程池调度。

Executors工厂类

Executor框架提供了各种类型的线程池,主要有以下工厂方法:

//创建固定数目线程的线程池。该线程池中的线程数量始终不变。
//当有一个新的任务提交时,线程池中若有空闲线程,则立即执行。
//若没有,则新的任务会被暂存在一个任务队列中,待有线程空闲时,便处理在任务队列中的任务。
public static ExecutorService newFixedThreadPool(int nThreads){};

//该方法返回一个只有一个线程的线程池。
//若多于一个任务被提交到该线程池,任务会被保存在一个任务队列中,
//待线程空闲,按先入先出顺序执行队列中的任务。
public static ExecutorService newSingleThreadExecutor(){};

//该方法返回一个可根据实际情况调整线程数量的线程池。
//线程池的线程数量不确定,但若有空闲线程可以复用,则会优先使用可复用的线程。
//如果现有线程没有可用的,则创建一个新线程病添加到池中。
//终止并从线程池中移除哪些已经60秒钟未被使用的线程。
public static ExecutorService newCachedThreadPool(){};

//该方法返回一个ScheduledExecutorService对象,线程池大小为1。
//ScheduledExecutorService接口在ExecutorService接口之上
//扩展了在给定时间执行某任务的功能,
//如在某个固定的延时之后执行,或者周期性执行某个任务。
public static ScheduledExecutorService newSingleThreadScheduledExecutor(){};

//该方法返回一个ScheduledExecutorService对象,可以指定线程数量。
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize){};

参考:
《实战Java高并发程序设计》
http://geek.csdn.net/news/detail/113868

你可能感兴趣的:(java,线程池,executor)