线程池的创建分为两大类Executors和ThreadPoolExecutor的方式:
1.Executors.newFixedThreadPool:创建一个固个数大小的线程池,其应用场景是任务可控,也就是说可控制并发线程数,超出的线程会在队列中等待。
2.Executors.newCachedThreadPool:创建一个带缓存的线程池,应用场景是存在大量短期任务,当线程数超过处理所需,缓存一段时间后会回收,若线程数不够,则新创建线程。
3.Executors.newScheduledThreadPool:创建可以执行定时任务的线程池
4.Executors.newSingleThreadScheduledExecutor:创建一个单线程的可以执行定时任务的线程池
5.Executors.newSingleThreadExecutor:创建单个线程的线程池,优点:避免频繁线程创建与销毁,保证了线程先进先出的执行顺序,可以更好地分配执行任务
6.Executors.newWorkStealingPool:创建一个抢占式执行的线程池(任务执行顺序不确定),根据cpu核心数与任务量生成对应的线程池
7.ThreadPoolExecutor:最原始的创建线程池的方式,阿里巴巴开发手册中推荐使用这种方式去创建线程池,它包含了7个重要的参数。