您的位置:首页 > 编程语言 > Java开发

Java并发编程---Executors多任务线程框架

2018-01-07 15:14 489 查看
 一.概念

       为了更好地控制多线程,JDK提供了一套线程框架Executor,帮助开发人员有效地进行线程控制.他们都在java.util.concurrent包中,是JDK并发包的核心.其中有一个比较重要的类Executors,他扮演这线程工厂的角色,我们通过Executors可以创建特定功能的线程池.

          Executors创建线程池的方法:

       newFixedThreadPool()方法,该方法返回一个固定数量的线程池,该方法的线程数始终不变,当有一个任务提交时,若线程池中空闲,则立即执行;若没有,则会被暂缓在一个任务队列中等待有空闲的线程去执行.

       newSingleThreadExecutor()方法,创建一个线程的线程池,若空闲则执行,若没有空闲线程则暂缓在任务队列中

       newCachedThreadPool()方法,返回一个可根据实际情况调整线程数量的线程池,不限制最大线程数量,若有任务,则创建线程;若无任务,则不创建线程.若果没有任务,则线程在60s后自动回收(空闲时间60s)

       newScheduledThreadPool()方法,该方法返回一个ScheduledExecutorService对象,但该线程池可以指定线程的数量

二.使用示例 

package com.thread.executors;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
* 多任务线程框架
* @author lhy
* @time 2017.01.05
*
*/
public class UseExecutors {

public static void main(String[] args) {
// TODO Auto-generated method stub

ExecutorService pool = Executors.newFixedThreadPool(10);         //定义固定的线程池数量

ExecutorService pool2 = Executors.newSingleThreadExecutor();

ExecutorService pool3 = Executors.newCachedThreadPool();

ExecutorService pool4 = Executors.newScheduledThreadPool(10);
}

}


 2.1 newFixedThreadPool()方法JDK底层实现



public static ExecutorService newFixedThreadPool(int nThreads) {
return new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
}


 2.2 newSingleThreadExecutor()方法JDK底层实现

public static ExecutorService newSingleThreadExecutor() {
return new FinalizableDelegatedExecutorService
(new ThreadPoolExecutor(1, 1,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>()));
}


 2.3 newCachedThreadPool() 方法JDK底层实现

public static ExecutorService newCachedThreadPool() {
return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
60L, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>());
}

 2.4 newScheduledThreadPool() 方法JDK底层实现



public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize) {
return new ScheduledThreadPoolExecutor(corePoolSize);
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐