码上敲享录 > java面试题及答案大全 > JDK1.8 创建线程池有哪几种方式?

JDK1.8 创建线程池有哪几种方式?

上一章章节目录下一章 2023-07-12已有233人阅读 评论(0)

在JDK 1.8中,可以使用Executor框架提供的以下几种方式来创建线程池:


1. 使用Executors工厂类的静态方法创建线程池:

```java

ExecutorService executor = Executors.newCachedThreadPool(); // 创建一个可缓存线程池,线程数根据需要动态调整

ExecutorService executor = Executors.newFixedThreadPool(int nThreads); // 创建一个固定大小的线程池,最多同时执行nThreads个任务

ScheduledExecutorService executor = Executors.newScheduledThreadPool(int corePoolSize); // 创建一个调度线程池,有定时任务和周期性任务的执行能力

ExecutorService executor = Executors.newSingleThreadExecutor(); // 创建一个单线程化的线程池,只有一个线程执行任务

```


2. 使用ThreadPoolExecutor类自定义线程池:

```java

int corePoolSize = 10; // 核心线程数

int maxPoolSize = 100; // 最大线程数

long keepAliveTime = 60; // 线程空闲时间

TimeUnit unit = TimeUnit.SECONDS; // 时间单位

BlockingQueue<Runnable> workQueue = new ArrayBlockingQueue<>(100); // 任务队列

ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize, maxPoolSize, keepAliveTime, unit, workQueue);

```


通过自定义ThreadPoolExecutor,可以根据具体需求来设置核心线程数、最大线程数、线程空闲时间、任务队列等参数,以满足业务需求和资源限制。


无论采用哪种方式,都需要注意合理设置线程池的参数,以充分利用系统资源,同时避免线程资源浪费和过度消耗。需要根据具体业务场景和系统负载情况,选择合适的线程池配置来满足需求。


0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交