Java线程池
Java线程池是一种实现多线程的机制,它提供一个线程队列,用来存放等待处理的任务,它可以控制最大并发线程数,并可以重用空闲线程,避免线程重复创建和销毁的开销。
使用方法
- 创建线程池:创建一个ThreadPoolExecutor类的实例,可以指定线程池的大小、最大线程数、存活时间等参数;
- 提交任务:使用ThreadPoolExecutor的execute()方法提交一个任务,任务可以是一个Runnable实例或者一个Callable实例;
- 关闭线程池:使用ThreadPoolExecutor的shutdown()方法关闭线程池;
配置参数
ThreadPoolExecutor类提供了一些可以设置的参数:
- corePoolSize:核心线程数,即线程池中维护的最小线程数;
- maximumPoolSize:最大线程数,即线程池中能够容纳的最大线程数;
- keepAliveTime:空闲线程存活时间,即当线程池中线程数量超过corePoolSize时,多余的空闲线程的存活时间;
- unit:keepAliveTime的时间单位,可以是TimeUnit中的几个静态属性;
- workQueue:任务队列,即等待处理的任务;
- threadFactory:线程工厂,用于创建线程;
- handler:拒绝策略,当任务太多来不及处理时,如何拒绝任务。
使用示例
// 创建线程池
ThreadPoolExecutor executor = new ThreadPoolExecutor(
5, // 核心线程数
10, // 最大线程数
60, // 空闲线程存活时间
TimeUnit.SECONDS, // 时间单位
new LinkedBlockingQueue<runnable>() // 任务队列
);
// 提交任务
executor.execute(new Runnable() {
@Override
public void run() {
// 任务逻辑
}
});
// 关闭线程池
executor.shutdown();
本文链接:http://task.lmcjl.com/news/9405.html