手动创建线程池使用ThreadPoolExecutor创建对象
    ThreadPoolExecutor pool = new ThreadPoolExecutor(参数)
    参数1:核心线程数
    参数2:线程池总数量
    参数3:临时线程空闲时间
    参数4:临时线程空闲单位
    参数5:阻塞队列
    参数6:创建线程方式
    参数7:任务拒绝策略

    1. ThreadPoolExecutor pool = new ThreadPoolExecutor(
    2. 3,//核心线程数
    3. 10,//线程池总数量
    4. 60, // 临时线程空闲时间
    5. TimeUnit.SECONDS, // 临时线程空闲单位
    6. new ArrayBlockingQueue<>(5),// 阻塞队列
    7. Executors.defaultThreadFactory(),//创建线程方式
    8. new ThreadPoolExecutor.AbortPolicy()//任务拒绝策略
    9. );

    核心线程数:线程池中一直存在的线程,除非线程池关闭,才会释放
    线程池总数:当前线程池里最多容纳的线程数量
    临时线程空闲时间:临时线程空闲的时间
    临时线程空闲单位:临时线程空闲的单位(采用TimeUnit表示)
    阻塞队列:线程池线程满了以后,将任务放进队列等待,采用ArrayBlockingQueue
    创建线程方式:推线使用默认 Executors.defaultThreadFactory()
    任务拒绝策略:推线使用默认 new ThreadPoolExecutor.AbortPolicy()