线程池使用示例

发布时间 2023-11-26 12:21:31作者: 自由港

概述

在多线程执行任务时,可以使用线程池执行任务。
相关代码如下:

public static void main(String[] args) {
        ThreadPoolExecutor executor=null;
        try{
            executor = new ThreadPoolExecutor(2, 3, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(8));
            // 提交任务到线程池
            for (int i = 0; i < 11; i++) {
                executor.execute(() -> {
                    try {
                        Thread.sleep(1000); // 模拟任务执行时间
                        System.out.println("任务 " + Thread.currentThread().getId() + " 执行完成...");
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                });
            }
        }
        catch (Exception ex){
            ex.printStackTrace();
        }
        finally {
            executor.shutdown();
        }
    }

这里可以看到线程池的
1.核心线程数
2.最大线程数
3.队列大小

我们可以测试一次最大可以提交的线程数为
最大线程数 + 队列大小。
如果提交的任务数大于这个数量,那么会抛出拒绝异常。