java怎么自定义并发线程池

   2025-02-15 7640
核心提示:要自定义并发线程池,可以使用ThreadPoolExecutor类来实现。ThreadPoolExecutor是ExecutorService接口的一个实现类,可以用来创

要自定义并发线程池,可以使用ThreadPoolExecutor类来实现。ThreadPoolExecutorExecutorService接口的一个实现类,可以用来创建和管理线程池。

以下是一个自定义并发线程池的示例:

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;        // 工作队列        BlockingQueue<Runnable> workQueue = 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()方法来关闭线程池。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言