线程池的拒绝策略

什么是线程池:

        线程池是一种多线程处理方法,帮我们管理线程,避免创建大量的线程增加服务器压力。

线程池的优点:

        1.提高响应速度,可以提前启动所有的核心线程,任务过来就可以直接执行了。

        2.降低资源消耗,不用频繁的创建和销毁线程

        3.提高线程的可管理性

线程池的构造方法:

        创建线程池需要使用ThreadPoolExecutor类,它的构造方法参数如下:

        public ThreadPoolExecutor(int corePoolSize,核心线程数量

                              int maximumPoolSize,最大线程数量

                              long keepAliveTime,超过核心线程数量的线程,把任务执行结束后,

                                                                达到指定的时间后会回收超过核心线程数量的线程

                              TimeUnit unit,存活时间的单位

                              BlockingQueue<Runnable> workQueue,保持待执行的队列

                              ThreadFactory threadFactory,创建新线程使用的工厂

                              RejectedExecutionHandler handler);当任务无法执行时的处理器

线程池的执行过程 :

        线程池执行任务的基本过程:

                1.每过来一个任务,就启动一个核心线程,去执行任务

                2.如果核心线程都用完了,再过来任务,存入阻塞队列

                3.如果阻塞对了也存满了,再过来任务,可以再启动线程,直到最大线程数量。

                4.如果达到了最大线程数量,再过来任务,启动拒接策略。


import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class work {
	public static void main(String[] args) {
		//核心线程数
		int corePoolSize = 3;
		//最大线程数
		int maximumPoolSize = 6;
		//超过 corePoolSize 线程数量的线程最大空闲时间
		long keepAliveTime = 2;
		//以秒为时间单位
		TimeUnit unit = TimeUnit.SECONDS;
		//创建工作队列,用于存放提交的等待执行任务
		BlockingQueue<Runnable> workQueue = new ArrayBlockingQueue<Runnable&g
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值