线程池类型

线程池类型:

  • ScheduledThreadPool

     作用:支持定时或周期性执行任务。

        线程池参数:

               最大线程数为:Integer.MAX_VALUE

                阻塞队列:DelayedWorkQueue

                KeepAliveTime为0;

        使用场景:适用于需要定时或定期执行任务,并且需要限制线程数数量的需求场景。

  • SingleThreadExecutor

          作用:单线程执行任务。

          线程池参数:

                  核心线程数:1

                  最大线程数为:1

                  阻塞队列:LinkedBlockingQueue

                 非核心线程空间存活时间为:0秒

        使用场景:适用于需要顺序执行任务的场景,保证任务按顺序执行,适用于需要顺序处理的场景;

  • FixedThreadPool

核心线程数和最大线程数相同,适用于任务数量大致固定的场景。如果任务数量超过线程池处理能力,会触发拒绝策略;

             线程池参数:

                    核心线程数和最大线程数一致;

                    非核心线程空闲存活时间,即KeepAliveTime为0

                    阻塞队列为无届队列LinkedBlockingQueue

            工作机制:

                    a.提交线程任务

                    b.如果线程数少于核心线程数,创建核心线程执行任务

                    c.如果线程数等于核心线程,把任务添加到LinkedBlockingQueue阻塞队列

                    d.如果线程执行完任务,去阻塞队列取任务,继续执行

              使用场景:适用于处理cpu密集型任务,确保cpu在长期被工作线程使用的情况下,尽可能的少分配线程,即适用执行长期的任务。

  • CachedThreadPool

线程数几乎可以无限增加,适用于任务数量波动较大的场景

                线程数参数:

                        核心线程数为:0

                        最大线程数为:Integer.MAX_VALUE

                        工作队列是SynchronousQueue同步队列

                        非核心线程空闲存活时间为60秒

                工作机制:

                        a.提交线程任务

                        b.因为核心线程数为0,所以任务直接加到SynchronousQueue工作队列

                        c.判断是否有空闲线程,如果有,就去取出任务执行

                        d.如果没有空闲线程,就新建一个线程执行

                        e.执行完任务的线程,就可以存活60秒,如果在这期间,接到任务,就可以继续存活下去,否则被销毁。

                使用场景:用于并发执行大量短期的小任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值