1. 线程池作用
使用背景
- 在并发大量异步任务处理程序中,每执行一个任务就需要创建一个线程,同时任务执行完毕之后需要将线程销毁.我们知道JVM创建线程的时候需要为其分配线程栈空间以及一些初始化操作,同时销毁的过程需要回收线程栈空间并由gc释放资源,期间都需要耗费一定的时间,因此一个任务的最终执行时间=创建线程newTime + 程序执行excuteTime + 线程销毁的gcTime,如果期间newTime+gcTime > excuteTime,那么这时候执行任务创建线程在程序中就显得十分不划算
- 线程执行需要JVM分配线程栈空间,需要从系统内存申请,如果创建的线程过多,那么就容易导致内存空间不够用导致内存溢出,默认的线程栈空间大小是1M
- 线程是由操作系统的CPU进行调度,因此并发多线程执行时CPU需要分配时间片并发执行线程,也就是线程并发执行是需要来回切换CPU的context,严重影响性能
- 并发环境下,如果创建的线程很多,增加对线程的维护和管理的困难
作用
- 运用资源重复利用的思维,我们建立一个“池”的概念,多任务异步执行通过线程池实现线程复用,利用池化技术来分配和管理线程的使用,避免线程频繁创建和销毁消耗更多的时间,提高并发执行效率
- 其次,通过线程池我们可以控制线程的数量,可以根据指定的策略来管理线程,比如任务过多,线程处理不过来,可以分配新的线程,当线
本文详细介绍了线程池的作用,如资源复用、控制线程数量以提高并发执行效率。线程池相关API包括Executor、ExecutorService、ScheduledExecutorService等,以及线程池的创建和管理。线程池原理部分讲解了ThreadPoolExecutor的核心组件如工作线程、任务队列、拒绝策略等,还阐述了线程池的执行流程。最后,文章提到了线程池的监控方法,如获取线程池大小、活动线程数和任务统计等。
订阅专栏 解锁全文


被折叠的 条评论
为什么被折叠?



