一、线程基础只是
1.1 线程的实现方式有几种?
两种:
1、继承Thread类
2、实现Runnable接口
1.2 thread.run和thread.start有区别吗?
run是同一个线程中,属于方法调用
start是启动一个新的线程
1.3线程的生命周期
线程缺点:执行完毕后无法复用、线程过多,导致jvm宕机
引出线程池
二、线程池
2.1 J.U.C工具类
java.util.concurrent并发编辑中常用的工具类
2.2 线程池解决了什么问题?
降低系统资源消耗、提供系统响应速度、方便线程并发数的管控、节省CPU切换线程的时间承保、提供更强大的功能
2.3 线程池的问题
1、提交异步任务后,如果jvm宕机,已提交的任务会丢失
2、如果使用不合理,会导致内存溢出
三、线程池原理
3.1 线程池类继承结构图
最常用的是ThreadPoolExecutor
Executors是协助创建线程池的工具类
3.2 线程池的工作状态
shutdown()等线上任务执行完毕后,再关闭
shutdownNow()立刻关闭,线上任务全部丢失
3.3 线程池参数
7个参数:
最大核心线程数有什么用?
当核心线程数满了且任务队列也满了之后,还有新任务加入则开启最大线程数的线程
如果配置了无限队列,非核心线程池就没用了