java 手写线程池

MyThreadPoolDemo.java

public class MyThreadPoolDemo {
    public static void main(String[] args) {
        ExecutorService threadPool = new ThreadPoolExecutor(
                2,  // 默认2个线程
                5, // 最多 5 个线程
                1L, // 等待时间
                TimeUnit.SECONDS,  // 等待时间单位
                new LinkedBlockingDeque<>(3),  // 阻塞等待区可容纳任务数3
                Executors.defaultThreadFactory(),  // 默认格式
                new ThreadPoolExecutor.AbortPolicy());  // 拒绝策略3种

        // 5 个任务需要 2个线程来处理
        // 最多 5 + 3 个任务,如果多余8个,就会强制拒绝。 上面参数2 + 参数5的个数(5+3)
        for (int i = 0; i < 10; i++) {
            threadPool.execute(() -> {
                System.out.println(Thread.currentThread().getName() + "/ 处理业务");
            });
        }
        threadPool.shutdown();
    }
}

只做记录。

上一篇:Java并发:线程池的基本原理总结


下一篇:C#(ThreadPool)线程池的详解及使用范例