02-线程池
1. 线程池概念
现有问题:
- 线程是宝贵的内存资源、单个线程约占1MB的空间,过多分配易造成内存溢出;
- 频繁的创建及销毁会增加虚拟机回收频率、资源开销,造成程序性能下降。
线程池:
- 线程容器,可设定线程分配的数量上限;
- 将预先创建的线程对象存入池中,并重用线程池中的线程对象;
- 避免频繁的创建和销毁。
2. 线程池原理
将任务提交给线程池,由线程池分配线程、运行任务,并在当前任务结束后复用线程。
- 应用与线程池的交互和线程池的内部工作过程:
3. 线程池创建
常用的线程池接口和类:
① Executor // 接口,线程池的顶级接口
② ExecutorService //接口,线程池接口,可通过Future<?> submit(Runnable task)提交任务代码
③ Executors // 工厂类,通过此类可以创建一个线程池4种方式
(1)通过 Executors.newFixedThreadPool(int nThreads) 获取固定数量的线程池
@nThreads int 指定线程池中线程的数量
@return ExecutorService 接口类型引用
(2)通过 Executors.newCachedThreadPool()获得动态数量的线程池,如不够则创建新的,没有上限
@return ExecutorService 接口类型引用
1 |
|
02-线程池
https://janycode.github.io/2016/04/28/02_编程语言/01_Java/01_JavaSE/05_并发和锁/02-线程池/