java之线程池解析

来源:互联网 发布:techsmith软件 编辑:程序博客网 时间:2024/06/05 02:57

一、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);
0 0
原创粉丝点击