要自定义并发线程池,可以使用ThreadPoolExecutor
类来实现。ThreadPoolExecutor
是ExecutorService
接口的一个实现类,可以用来创建和管理线程池。
以下是一个自定义并发线程池的示例:
import java.util.concurrent.*; public class CustomThreadPool { public static void main(String[] args) { // 核心线程数 int corePoolSize = 2; // 最大线程数 int maximumPoolSize = 5; // 空闲线程存活时间 long keepAliveTime = 10; // 时间单位 TimeUnit unit = TimeUnit.SECONDS; // 工作队列 BlockingQueueworkQueue = new ArrayBlockingQueue<>(10); // 创建自定义线程池 ThreadPoolExecutor threadPool = new ThreadPoolExecutor( corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue); // 提交任务给线程池 for (int i = 0; i < 20; i++) { threadPool.execute(new Task(i)); } // 关闭线程池 threadPool.shutdown(); } static class Task implements Runnable { private int taskId; public Task(int taskId) { this.taskId = taskId; } @Override public void run() { System.out.println("Task " + taskId + " is running."); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }
在上面的示例中,我们创建了一个ThreadPoolExecutor
线程池,设置了核心线程数为2,最大线程数为5,空闲线程存活时间为10秒。然后,我们使用execute()
方法提交了20个任务给线程池。每个任务是一个Task
对象,实现了Runnable
接口。在run()
方法中,我们打印了任务的id,并让线程睡眠1秒。
最后,我们调用了shutdown()
方法来关闭线程池。