- 什么是线程池?线程池的作用?
- 线程池是一种标准的资源池 since jdk5.0 作者Doug Lea
- 资源池能够在用户出现之前提前预留活跃资源,从而在用户出现的第一时间直接满足用户对资源的需求,并且将资源的创建和销毁都委托给资源池完成,从而优化用户体验
- 假如一个线程的完整执行时间为T,则T是由三部分时间组成的
- t1:在操作系统当中创建一个线程的时间
- t2:执行线程核心逻辑的时间run()
- t3:在操作系统当中销毁一个线程的时间
- 而如果run()当中的代码非常简短,则t2所占T的比例就会很小,这时候我们会觉得付出和回报根本不成比例,喧宾夺主,主次不分
- 创建线程有哪些方式?
- extends Thread
- implements Runnable
- implements Callable<T>
- 第三种也就是Callable接口的方式的优势是什么?
- 有返回值
- 能抛异常
- 官方核心类库当中提供的常用的线程池种类有哪些?
- 修复后可重用的:newFixedThreadPool(int x) -- 访问量比较稳定,波动不大
- 缓存机制的:newCachedThreadPool() -- 淘宝双十一、京东618瞬时访问量大
- 单一实例的:newSingalThreadPool() -- 对提交的时间有严格要求的;先后顺序
- 如果不适用核心类库当中官方提供的线程池实现,而要自己创建线程池执行器,那么需要几个参数,各自代表什么含义?5个
- 线程池当中预留的核心线程数量
- 线程池当中最大线程数量
- 保持活着的时间
- 时间单位
- 一个队列,用于存放到达上限之后依然提交上来的线程任务
- JUC包当中的内容:
- 多线程高并发的场景下,更优秀的集合
- 多线程高并发场景下,一些常用工具,CoutDownLatch
- 面向对象思想实现的锁,locks子包里
- 线程池的实现
- Callable<T> 、Future<T>;第四种包含第五种
【线程池】
于 2023-04-14 20:52:40 首次发布