一、Executor框架
Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。他们的关系为:
并发编程的一种编程方式是把任务拆分为一些列的小任务,即Runnable,然后在提交给一个Executor执行,Executor.execute(Runnalbe)。Executor在执行时使用内部的线程池完成操作。 二、创建线程池 2.1、Executors类,提供了一系列工厂方法用于创先线程池,返回的线程池都实现了ExecutorService接口。 2.1.1、创建固定数目线程的线程池。public static ExecutorService newFixedThreadPool(int nThreads)
2.1.2创建一个可缓存的线程池,调用execute 将重用以前构造的线程(如果线程可用)。如果现有线程没有可用的,则创建一个新线程并添加到池中。终止并从缓存中移除那些已有 60 秒钟未被使用的线程。
public static ExecutorService newCachedThreadPool()
2.1.3、创建一个单线程化的Executor。
public static ExecutorService newSingleThreadExecutor()
2.1.4、创建一个支持定时及周期性的任务执行的线程池,多数情况下可用来替代Timer类。
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)
使用newFixedThreadPool(int intThreads)方法创建一个ExecutorService, 创建可以容纳10个线程任务
ExecutorService executorService = Executors.newFixedThreadPool(10);
向execute(Runnable runnable)方法中传递一个异步的Runnable对象, ExecutorService 中某个线程会执行这个runnable线程
executorService.execute(new Runnable() {
public void run() {
System.out.println("Asynchronous task");
}
});
executorService.shutdown();
任务的委托(Task Delegation)
创建线程池
ExecutorService executorService1 = Executors.newSingleThreadExecutor();
ExecutorService executorService2 = Executors.newFixedThreadPool(10);
ExecutorService executorService3 = Executors.newScheduledThreadPool(10);