当前位置: java基础教程 > 11-java多线程 > 阅读正文

线程池

2021.2.14.   454 次   821字

对单个线程来说,它只有一次生命周期,即一次 start

反复使用 start 方法会被 JVM 报错

对于需要反复使用的线程,如果反复创建会很慢,可以通过线程池解决

1.线程池的概念

线程池可以理解为一个容器 (集合)

程序启动时,实例化这个集合,每次需要线程时,就从集合中拿出来(删除)一个

当线程用完后,把线程归还(添加)到集合

2.线程池工厂类

在 JDK 1.5 之后,JDK 内置了线程池类,即线程池的工厂类

1.导包
import java.util.concurrent.Executors;
2.静态方法

创建一个线程池

public static ExecutorService newFixedThreadPool(int nThreads);

其中的 ExecutorService 是线程池接口,int 参数是线程池容量

3.线程池接口类

线程池接口的实现类,可以当作接口类使用

1.导包
import java.util.concurrent.ExecutorService;
2.方法

1.从线程池获取线程,并启动

submit(Runnable task)

2.关闭/销毁线程

void shutdown()

4.线程池的使用步骤

1.使用线程池工厂的newFixedThreadPool方法,创建含有指定数量的线程池

ExecutorService es = Executors.newFixedThreadPool(2);

2.创建一个含有 Runnable 接口的类,即创建一个线程类(假设为 RunnableImpl)

3.调用线程池接口类中的 submit 方法,传递刚才的 Runnable 线程类

es.submit(new RunnableImpl());//每次传递占用一个线程池,
es.submit(new RunnableImpl()); //用完会自动归还线程池,
es.submit(new RunnableImpl());   //可多次调用

4.调用线程池接口类的 shutdown 方法,销毁线程池(销毁后无法再调用线程)

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群