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

线程池的使用

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

线程池的使用

为什么要使用线程池?

池化思想的主要目的是减少每次获取资源的消耗,提高对资源的利用率。
eg:线程池、数据库连接池、Http连接池等。

如果并发的线程数量多,而且每个线程创建后执行一个需要时间很短的任务就结束然后销毁线程,就会频繁创建和销毁线程,耗费资源也降低系统效率。
利用线程池使线程复用,先创建好一些线程放在线程池中,需要处理任务时就去线程池获取线程,任务执行完线程也不会销毁,线程继续执行下一个任务。

线程池优点:

提高线程利用率,降低资源消耗提高程序的响应速度便于统一管理线程对象可以控制最大并发数(通过设置线程池参数) 线程池七大核心参数

    corePoolSize 核心线程数目 - 池中会保留的最多线程数maximumPoolSize 最大线程数目 - 核心线程+救急线程的最大数目keepAliveTime 生存时间 - 救急线程的生存时间,生存时间内没有新任务,此线程资源会释放unit 时间单位 - 救急线程的生存时间单位,如秒、毫秒等workQueue - 当没有空闲核心线程时,新来任务会加入到此队列排队,队列满会创建救急线程执行任务threadFactory 线程工厂 - 可以定制线程对象的创建,例如设置线程名字、是否是守护线程等handler 拒绝策略 - 当所有线程都在繁忙,workQueue 也放满时,会触发拒绝策略:
    (1). 抛异常 java.util.concurrent.ThreadPoolExecutor.AbortPolicy
    (2). 由调用者执行任务 java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy
    (3). 丢弃任务 java.util.concurrent.ThreadPoolExecutor.DiscardPolicy
    (4). 丢弃最早排队任务 java.util.concurrent.ThreadPoolExecutor.DiscardOldestPolicy
public class TestThreadPoolExecutor {
    public static void main(String[] args) {
        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
                3,//核心线程数
                5,//最大线程数:核心线程+救急线程
                0,//救急线程的生存时间
                TimeUnit.SECONDS,//救急线程的生存时间单位
                new ArrayBlockingQueue<>(3),//工作队列
                Executors.defaultThreadFactory(),//线程工厂
                new ThreadPoolExecutor.AbortPolicy());//拒绝策略

        for (int i = 0; i < 6; i++) {
            // i模拟任务数。任务数先由核心线程处理,
            // 核心线程处理不了进入工作队列等待,工作队列排满了再唤醒救急线程,
            // 核心线程和救急线程都在工作,工作队列也排满了,还加任务过来就会抛异常
            threadPoolExecutor.execute(() -> {
                System.out.println(Thread.currentThread().getName() + "-->办理业务");
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            });
        }
        threadPoolExecutor.shutdown();
    }
}

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

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

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