今天跟大家分享下Java中线程池的探讨的知识。
前言
多线程的异步执行方式,虽然能够最大限度发挥多核计算机的计算能力,但是如果不加控制,反而会对系统造成负担。线程本身也要占用内存空间,大量的线程会占用内存资源并且可能会导致Out of Memory。即便没有这样的情况,大量的线程回收也会给GC带来很大的压力。
为了避免重复的创建线程,线程池的出现可以让线程进行复用。通俗点讲,当有工作来,就会向线程池拿一个线程,当工作完成后,并不是直接关闭线程,而是将这个线程归还给线程池供其他任务使用。
接下来从总体到细致的方式,来共同探讨线程池。
1 总体架构
总体的架构,来看Executor的框架图:

接口:Executor,CompletionService,ExecutorService,ScheduledExecutorService
抽象类:AbstractExecutorService
实现类:ExecutorCompletionService,ThreadPoolExecutor,ScheduledThreadPool
本文深入探讨Java线程池的架构,包括核心线程数、任务缓存队列、拒绝策略以及常见线程池类型。讲解了如何选择线程池大小、线程池工厂的自定义以及线程池的正确使用,旨在帮助读者理解并优化线程池配置。
订阅专栏 解锁全文

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



