栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

创建线程池ThreadPoolExecutor

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

创建线程池ThreadPoolExecutor

创建线程池有三大方法七大参数:

三大方法为:

1:Executors.newSingleThreadExecutor();单一线程
2:Executors.newFixedThreadPool(5);创建固定线程池的大小
3:Executors.newCachedThreadPool();可伸缩,遇强则强

七大参数为:

1:corePoolSize  核心线程池大小

2:maximumPoolSize最大核心线程池大小

3:keepAliveTime 超时了没有人调用就会被释放

4:TimeUnit 超时单位

5:workQueue 阻塞队列

6:threadFactory 线程工厂

7:handle 拒绝策略

拒绝策略又分为四种拒绝策略,分别为:

1:new ThreadPoolExecutor.AbortPolicy() 线程满了,但还有线程进入,则不处理,并抛出异常

2:new ThreadPoolExecutor.CallerRunsPolicy() 哪里来的去哪里 会输出main 

3:new ThreadPoolExecutor.DiscardPolicy() 队列满了,丢掉任务,但是不会抛出异常

4:new ThreadPoolExecutor.DiscardOldestPolicy() 队列满了,尝试和最早的竞争,不会抛出异常

如何去定义自己的最大线程数量。

1:cpu密集形,电脑几核就定义为几,可以保持cpu的效率最高

2:io密集形, >判断你程序中十分耗io的线程

程序。15个大型任务,io十分占用资源。

推荐使用直接手动去创建线程池。

public static void main(String[] args) {

//        ExecutorService threadPool = Executors.newSingleThreadExecutor();//单一线程
//        ExecutorService threadPool = Executors.newFixedThreadPool(5);//创建固定线程池的大小
//        ExecutorService threadPool = Executors.newCachedThreadPool();//可伸缩,遇强则强

        //corePoolSize 核心线程池大小
        //maximumPoolSize最大核心线程池大小
        //keepAliveTime 超时了没有人调用就会被释放
        //TimeUnit 超时单位
        // workQueue 阻塞队列
        //threadFactory 线程工厂
        //handle 拒绝策略
        ThreadPoolExecutor threadPool = new ThreadPoolExecutor(2,//正常工作的线程个数
                5,         //最大可以工作的线程个数
                10,             //线程释放时间
                TimeUnit.MICROSECONDS,      //线程释放时间单位
                new linkedBlockingDeque<>(3),   //超过3个线程等待则出发最大线程
                Executors.defaultThreadFactory(),       //
                new ThreadPoolExecutor.DiscardOldestPolicy());
        //最大承载线程数= deque +max个数

        
        try {
            for (int i = 1; i <= 10; i++) {
                threadPool.execute(() -> {
                    System.out.println(Thread.currentThread().getName() + "  ok");
                });
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            threadPool.shutdown();
        }
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/445361.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号