Java几种常见的线程池

FixedThredPool

介绍:可重用固定线程数的线程池


FixedThreadPool构造器源码

FixedThreadPool使用了无边界的任务队列,当有新任务来的时候,会首先判断当前线程数是否小于核心线程数,小于则创建新的线程来执行任务,如果大于的话会讲任务加入到LinkedBlockingQueue,当线程处理完手头的任务后,会在循环中反复从LinkedBlockingQueue中获取任务来执行,FixedThreadPool使用无边界的任务队列

SingleThreadExecutor详解

SingleThreadExecutor是只有一个线程的线程池,和FixedThreadPool类似只不过只有一个线程执行任务

CachedThreadPool详解


CacheThreadPool源码

CacheThreadPool的核心线程数被设置为0,最大线程数被设置为Integer.MAX.VALUE,即它是无界的,这就意味着如果主线程提交任务的速度高于最大线程执行的速度,CacheThreadPool会不断创建心的线程。极端情况下会导致耗尽cpu和内存资源

ScheduledThreadPoolExecutor详解

ScheduledThreadPoolExecutor使用的任务队列,会根据执行所需时间短的放在前面执行(ScheduledFutureTask的time变量小先执行),如果执行所需的时间相同则先提交的任务将被先执行ScheduledFutureTask的squenceNumber变量小的先执行

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容