文章目录
- 前言
- 1. 线程池的作用
- 2. 线程池的应用
- 3. 标准库中创建线程池的方式
前言
本文介绍线程池的作用和实现方法.
1. 线程池的作用
1.我们知道,线程的作用是由于进程的创建和销毁需要分配和回收资源,开销较大.而线程是"轻量级进程",创建销毁更高效.
2.线程池,比线程更加高效.使用线程池,需要事先把线程创建好放到线程池中,要用线程的时候,直接在线程池里取.
3.线程的创建.由操作系统内核执行,而在线程池中,获取和归还线程只需用户代码即可实现.
2. 线程池的应用
1.创建有10个线程的线程池.
ExecutorService pool = ExecutorsnewFixedThreadPool(10);
我们发现上面的代码中没有用到构造方法去创建线程池.
这种设计模式为工厂模式,使用普通方法代替构造方法创建对象.
这种模式有什么作用呢?
我们知道,方法重载,方法的返回值类型或参数类型列表必须要求不同.但在某些情况下,两个构造方法,他们的返回值类型和参数列表完全相同,那么使用普通的构造方法无法进行区分,这里就需要用静态方法代替构造方法,然后通过静态方法名字的不同进行区分.
2.给线程池中的线程分配任务
如下代码,通过submit()方法给线程池提交任务,之后,线程池中的线程同时启动,领取任务,执行完一个任务后,再去领取下一个任务.
pool.submit(new Runnable() {
@Override
public void run() {
System.out.println("线程任务");
}
});
3. 标准库中创建线程池的方式
Java标准库中提供的几种创建线程池方式如下.