Java几种常见的线程池

2020-04-22  本文已影响0人  7183

FixedThredPool

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

FixedThreadPool构造器源码

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

SingleThreadExecutor详解

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

CachedThreadPool详解

CacheThreadPool源码

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

ScheduledThreadPoolExecutor详解

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

上一篇 下一篇

猜你喜欢

热点阅读