image.png

    线程池,其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。

    注意:线程池中的线程运行结束不会被销毁,耳式返回线程池等待下次被调用
    线程池jdk5.0版本推出
    ExecutorService:线程池类
    线程池类赋值线程生命周期,我们只需要像线程池中提交执行目标,线程池会自动分配线程,执行相对应的操作(业务逻辑)。

    1. 定义线程执行的目标:

    这里我们是用卖票的案例模拟

    1. 向线程池提交任务:

    F<?> submit((Runnable task)):接收一个Runnable接口实现类, 执行线程的目标

    实例化线程
    ExecutorService是一个接口,专门处理线程池的
    Ececutors是一个工具类,提供了很多的方法服务于线程池
    newFixedThreadPool(3);该方法你能传入的参数表示在线程启动的时候初始化几个线程

    1. package Test22_Demo.Demo01;/*
    2. @create 2020--12--15--9:32
    3. */
    4. import java.util.concurrent.Executor;
    5. import java.util.concurrent.ExecutorService;
    6. import java.util.concurrent.Executors;
    7. public class ThreadPoolDemo {
    8. public static void main(String[] args) {
    9. //实例化线程
    10. ExecutorService threadDemo = Executors.newFixedThreadPool(3);
    11. Ticket ticket = new Ticket();
    12. threadDemo.submit(ticket);
    13. threadDemo.submit(ticket);
    14. threadDemo.submit(ticket);
    15. threadDemo.submit(ticket);
    16. threadDemo.submit(ticket);
    17. //在适当的时候可以关闭线程池,一般不关闭 - 因为反而会影响性能
    18. //意味着线程池中的所有的线程都能销毁
    19. //threadPool。shutdown();
    20. }
    21. }