ExecutorService service = Executors.newCachedThreadPool(); //创建可缓存的线程池
ExecutorService service1 = Executors.newFixedThreadPool(10);//可重用固定线程数的线程池,使用LinkedBlockingQueue
ExecutorService service2 = Executors.newSingleThreadExecutor();//只有一个线程的线程池 使用LinkedBlockingQueue
ExecutorService service3 = Executors.newScheduledThreadPool(3);//主要用来在给定的延迟后运行任务,或者定期执行任务
实际项目中我们不推荐使用Executors ,调用线程池执行时,当要执行的线程数大于核心线程数量 , 线程会进入阻塞队列等待执行,而LinkedBlockingQueue 是一个无边阻塞队列,线程不会满足拒绝策略条件,从而导致oom发生
ThreadPoolExecutor(int corePoolSize,//线程池的核心线程数量
int maximumPoolSize,//线程池的最大线程数
long keepAliveTime,//当线程数大于核心线程数时,多余的空闲线程存活的最长时间
TimeUnit unit,//时间单位
BlockingQueue<Runnable> workQueue,//任务队列,用来储存等待执行任务的队列
ThreadFactory threadFactory,//线程工厂,用来创建线程,一般默认即可
RejectedExecutionHandler handler//拒绝策略,当提交的任务过多而不能及时处理时,我们可以定制策略来处理任务
)