一、Thread基础
CSDN:https://blog.csdn.net/ctwctw/article/details/116455457
微信公众号:https://mp.weixin.qq.com/s/YbZmM1OhJoc-Id_btaDRbA
包含如下考点:
- 什么是进程,什么是线程?
- 什么是线程的切换?
- 单核CPU设定为多线程有意义吗?
- 线程数是不是越大越好?怎么合理设置?
- 追问:我怎么知道等待时间和计算时间是多少?
- 创建线程的方法
- 线程有哪几种状态?
- 聊聊线程的打断interrupt
- 如何停止一个线程?
- 线程之间怎么进行通讯?
- 聊聊线程可见性?
- 缓存行是啥?有啥用?
- 聊聊线程有序性?
二、AbstractExecutorService
CSDN:线程池的鼻祖AbstractExecutorService模板模式真香(上)
微信公众号:线程池的鼻祖AbstractExecutorService模板模式真香(上)
包含如下考点:
- Runnable和Callable的区别?
- 线程池的类图知道吗?看过有哪些核心类吗?类关系是怎样的?
- 一直用的ThreadPoolExecutor真的是线程池的顶级入口吗?
- submit和execute的区别?
- submit(Runnable r)是怎么带返回值的?
- submit是怎么吞掉异常信息的?
- 线程池完美的采取了模板方法设计模式你看到了吗?
- shutdown和shutdownNow都属于ThreadPoolExecutor吗?有啥区别?
CSDN:线程池的鼻祖AbstractExecutorService模板模式真香(下)
微信公众号:线程池的鼻祖AbstractExecutorService模板模式真香(下)
包含如下考点:
- 比如滴滴打车,你同时下单给快车、滴滴打车、优享、礼橙专车,肯定是多线程异步去执行的任务,其中一个接单后就自动取消其他车型的派单,怎么实现? (invokeAny)
- 线程池里的invokeAny和invokeAll啥区别?
- invokeAll原理是啥?用到了哪种设计模式?(模板模式)
- invokeAll怎么取消的任务执行?中途报错是取消所有任务执行吗?
- 取消任务方法怎么取消已经执行完成了的任务的?回滚吗?(是个坑,因为没处理已经执行完的任务)
- invokeAny的ExecutorCompletionService采取了什么设计模式?(装饰者模式)
- invokeAny是干嘛的?他能只得到一个结果然后返回取消其他任务,怎么做到的?会优先获得哪个结果?
三、ThreadPoolExecutor
CSDN:ThreadPoolExecutor的核心参数以及线程池状态到底是咋玩的?
微信公众号:ThreadPoolExecutor的核心参数以及线程池状态到底是咋玩的?
包含如下考点:
- 线程池的参数有哪些?分别代表啥意思?
- 线程池是怎么创建线程的?
- 任务拒绝策略有哪些?分别啥区别?
- 线程池的完整流程是怎样的?
- 线程池的状态都有哪些?怎么存储的?怎么计算的(如何获取到的状态变量?如何获取到的线程数?)?
- 为什么用-1来表示运行中RUNNING状态?
- new一个线程池,他的活跃线程数是多少?怎么计算的?
- 线程池状态是怎么转换的?