Java系列-线程-线程池的创建方法和方法的参数

1.创建线程池的方法 

//java\util\concurrent\ThreadPoolExecutor.java

public ThreadPoolExecutor(int corePoolSize,
                              int maximumPoolSize,
                              long keepAliveTime,
                              TimeUnit unit,
                              BlockingQueue workQueue,
                              ThreadFactory threadFactory,
                              RejectedExecutionHandler handler) {
}

 2.方法参数

参数 描述
corePoolSize 核心线程数
maximumPoolSize 最大线程数
keepAliveTime 空闲线程存活时间
unit 时间单位
workQueue 任务队列
threadFactory 线程工厂
handler 任务拒绝策略

3.例子

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class CustomThreadPoolExample {

    public static void main(String[] args) {
        // 核心线程数为2,最大线程数为4,线程空闲时间为5秒,使用有界队列(容量为2)作为工作队列
        ThreadPoolExecutor executor = new ThreadPoolExecutor(
                2, // 核心线程数
                4, // 最大线程数
                5, // 线程空闲时间
                TimeUnit.SECONDS, // 时间单位
                new ArrayBlockingQueue<>(2) // 工作队列,这里使用有界队列
        );

        // 提交10个任务给线程池
        for (int i = 0; i < 10; i++) {
            Task task = new Task("Task " + i);
            System.out.println("Submitting " + task.getName());
            executor.submit(task);
        }

        // 关闭线程池
        executor.shutdown();
    }

    static class Task implements Runnable {
        private String name;

        public Task(String name) {
            this.name = name;
        }

        public String getName() {
            return name;
        }

        @Override
        public void run() {
            System.out.println("Task " + name + " starting");
            try {
                // 模拟任务执行时间
                TimeUnit.SECONDS.sleep(2);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("Task " + name + " ending");
        }
    }
}

你可能感兴趣的:(Java,java)