线程池

一:线程池入门

1.1:线程池体系结构

线程池的体系结构:
java.util.concurrent.Executor 负责线程的使用和调度的根接口
		|--ExecutorService 子接口: 线程池的主要接口
				|--ThreadPoolExecutor 线程池的实现类
				|--ScheduledExceutorService 子接口: 负责线程的调度
					|--ScheduledThreadPoolExecutor : 继承ThreadPoolExecutor,实现了ScheduledExecutorService
工具类 : Executors 是工具类,快捷的创建线程池的方法

1.2:线程实现类参数

// 创建线程池
ExecutorService es = new ThreadPoolExecutor();
// 执行任务
es.execute (任务)

public ThreadPoolExecutor(int corePoolSize, // 核心工作线程的数量
        int maximumPoolSize, // 最大的工作线程数量。当任务队列满了的时候,会创建(最大线程-核心线程数量)临时线程来帮我们处理任务
        long keepAliveTime,   // 保持时间。 临时线程执行完任务后,会主动去任务队列里获取任务  如果经过 			  keepAliveTime 没有获取到,临时线程销毁。核心线程默认不超时。
        TimeUnit unit, // 时间的单位
        BlockingQueue<Runnable> workQueue, //存放任务  阻塞队列 (先入先出  线程安全  存取的阻塞方法)
				// ArrayBlockingQueue 基于数组的有界的阻塞队列
				// LinkedBlockingQueue 基于数组的无界的阻塞队列
        ThreadFactory threadFactory, // 线程工厂 
        RejectedExecutionHandler handler){}
 				// 拒绝策略 / 饱和策略
				AbortPolicy (默认) 丢弃任务, 并且抛出异常
				CallerRunsPolicy  不抛弃任务,让调用线程池的线程帮忙执行任务
				DiscardPolicy   丢弃任务,不抛出异常
				DiscardOldestPolicy 丢弃任务,不抛出异常,抛弃任务队列最早加入的任务 

1.3:线程池执行流程

流程1   判断核心线程数
流程2   判断任务能否加入到任务队列
流程3   判断最大线程数量
流程4   根据线程池的拒绝策略处理任务
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值