开发手册 欢迎您!
软件开发者资料库

Java 线程池 FixedThreadPool的使用及示例代码

Java 线程池 FixedThreadPool是Executors封装好的4种常见的功能线程池之一,是一个固定大小的线程池。本文主要介绍 FixedThreadPool的使用及示例代码。

1、FixedThreadPool简介

FixedThreadPool是只有核心线程,线程数量固定,执行完立即回收,任务队列为链表结构的有界队列。一般是用在控制线程最大并发数的使用场景。相对于通过使用 ThreadPoolExecutor 的方式,使用FixedThreadPool更方便,有些参数可能不需要设置,可以根据实现情况使用。

2、newFixedThreadPool源码

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

3、使用示例

import java.util.concurrent.*;import java.util.Date; import java.text.DateFormat;import java.text.SimpleDateFormat;public class Main {  public static void main(String[] args) throws Exception {        ExecutorService fixedThreadPool = Executors.newFixedThreadPool    (3);    // 创建需执行的任务    Runnable task =new Runnable(){      public void run() {              Date date=new Date();              DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");              System.out.println(" 当前时间为:"+dateFormat.format(date));      }    };    // 线程池添加任务    fixedThreadPool.execute(task);    //关闭线程池    fixedThreadPool.shutdown();    fixedThreadPool.awaitTermination(10000, TimeUnit.MILLISECONDS);    System.exit(0); //success  }}