线程池,其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。
注意:线程池中的线程运行结束不会被销毁,耳式返回线程池等待下次被调用
线程池jdk5.0版本推出
ExecutorService:线程池类
线程池类赋值线程生命周期,我们只需要像线程池中提交执行目标,线程池会自动分配线程,执行相对应的操作(业务逻辑)。
- 定义线程执行的目标:
这里我们是用卖票的案例模拟
- 向线程池提交任务:
F<?> submit((Runnable task)):接收一个Runnable接口实现类, 执行线程的目标
实例化线程
ExecutorService是一个接口,专门处理线程池的
Ececutors是一个工具类,提供了很多的方法服务于线程池
newFixedThreadPool(3);该方法你能传入的参数表示在线程启动的时候初始化几个线程
package Test22_Demo.Demo01;/*
@create 2020--12--15--9:32
*/
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolDemo {
public static void main(String[] args) {
//实例化线程
ExecutorService threadDemo = Executors.newFixedThreadPool(3);
Ticket ticket = new Ticket();
threadDemo.submit(ticket);
threadDemo.submit(ticket);
threadDemo.submit(ticket);
threadDemo.submit(ticket);
threadDemo.submit(ticket);
//在适当的时候可以关闭线程池,一般不关闭 - 因为反而会影响性能
//意味着线程池中的所有的线程都能销毁
//threadPool。shutdown();
}
}