随笔 - 441  文章 - 4  评论 - 84  阅读 - 109万 

概述

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

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.队列大小

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

posted on   自由港  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2010-11-26 C#扩展方法(转贴)
2010-11-26 直接构建SOAP包调用WEB SERVICE的方法
点击右上角即可分享
微信分享提示