package J20250731.demo03_threadPool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;

/**
 * @author WanJl
 * @version 1.0
 * @title ThreadPoolDemo02
 * @description
 * @create 2025/7/31
 */
public class ThreadPoolDemo02 {
    public static void main(String[] args) {
        //创建一个线程池，指定核心线程数和最大线程数
        ExecutorService executorService = Executors.newFixedThreadPool(3);
        //把父类对象转换为子类对象
        ThreadPoolExecutor tpe=(ThreadPoolExecutor) executorService;

        System.out.println("线程池的线程数："+tpe.getPoolSize());    //0
        //如果有任务想要交给线程执行，我们只需要调用executorService的submit方法，把任务传进去
        executorService.submit(()->{
            System.out.println("线程id："+Thread.currentThread().getId()+",线程名："+Thread.currentThread().getName()+"在执行了.....");
        });
        //向线程池容器提交一个任务
        executorService.submit(()->{
            System.out.println("线程id："+Thread.currentThread().getId()+",线程名："+Thread.currentThread().getName()+"在执行了.....");
        });
        //向线程池容器提交一个任务
        executorService.submit(()->{
            System.out.println("线程id："+Thread.currentThread().getId()+",线程名："+Thread.currentThread().getName()+"在执行了.....");
        });
        //向线程池容器提交一个任务
        executorService.submit(()->{
            System.out.println("线程id："+Thread.currentThread().getId()+",线程名："+Thread.currentThread().getName()+"在执行了.....");
        });
        //向线程池容器提交一个任务
        executorService.submit(()->{
            System.out.println("线程id："+Thread.currentThread().getId()+",线程名："+Thread.currentThread().getName()+"在执行了.....");
        });
        //向线程池容器提交一个任务
        executorService.submit(()->{
            System.out.println("线程id："+Thread.currentThread().getId()+",线程名："+Thread.currentThread().getName()+"在执行了.....");
        });

        //再次获取线程数
        System.out.println("线程池的线程数："+tpe.getPoolSize());

        //关闭线程池
        executorService.shutdown();

    }
}
