课程内容:
-
线程池的概念
-
线程池的种类
-
自定义线程池执行器
-
线程池启动线程
线程池的概念
线程池:
所谓线程池 是一种标准的资源池模式
资源池模式就是在用户出现之前提前预留活跃资源
从而在用户出现的第一时间直接满足用户对资源的需求
并且将资源的新建和销毁操作都委托给资源池完成
从而优化用户体验...
假如一个线程的完整执行时间为T
T = t1 + t2 + t3
t1: 在操作系统当中映射一个线程的时间
t2: 执行线程核心逻辑的时间 run()
t3: 在操作系统当中销毁一个线程的时间
如果run()当中代码非常简短 则t2所占T的比例
就会非常小 此时我们会觉得喧宾夺主付出和回报不成比例
t1 t2 t3
买菜做饭 享受美食 刷锅刷碗
在路上 上课 在路上
线程池的种类
核心类库当中 提供的常用的线程池种类:
Executors.newFixedThreadPool(int); 固定大小 修复后可重用的
Executors.newCachedThreadPool(); 缓存机制的
Executors.newSingleThreadExecutor(); 单一实例的
自定义线程池执行器
自己创建线程池执行器 需要多少个参数 各自代表什么含义
5个
1.线程池当中核心线程数量
2.线程池当中最大线程数量
3.保持活着的时间
4.时间单位
5.一个队列(存储排队的线程任务)
(5,20) submit 60
线程池启动线程
1.应用场景:标签:执行器,Executors,t2,day06,t3,线程,当中,m2 From: https://www.cnblogs.com/zhaodenghui33/p/18186734
线程的第三种实现方式只能通过线程池启动
implements Callable<T>
@Override
public T call() throws Exception{
给线程布置任务;
}
return T ;//只能通过线程池启动
2.线程池启动:
Executors es = Executors.newFixedThreadPool(3);
Future<T> xx = es.submit(线程对象);//提交执行
T yy = xx.get();//获取结果
es.shutdownNow();//关闭服务