线程池

创建线程池的两种方式

        Executors.newCachedThreadPool();//静态方法
        new ThreadPoolExecutor(10, 10,
                60L, TimeUnit.SECONDS,
                new ArrayBlockingQueue(10));//构造方法
  1. 使用Executors创建线程池


  2. 使用ExecutorService管理Executor的生命周期



  3. 使用future获取线程池执行结果


使用构造方法创建线程池的参数

public ThreadPoolExecutor(int corePoolSize,//核心线程数,一直存活
                              int maximumPoolSize,//最大线程数
                              long keepAliveTime,//超过核心线程数的线程的最大存活时间
                              TimeUnit unit,//存活时间单位
                              BlockingQueue<Runnable> workQueue,//等待队列,如果所有的线程都在忙碌中,新来的请求会进入等待队列
                              ThreadFactory threadFactory,//创建线程的工厂类,可以用来给线程提供一个更好听的名字
                              RejectedExecutionHandler handler//拒绝策略,默认为抛出异常
) { }

拒绝策略

1.默认,添加失败会抛出异常。
2.添加失败,会放弃。
3.添加失败,遗弃最旧的。
4.添加失败,主线程自己调用执行器中的execute方法来执行改任务。
5.自定义

常见线程池

1.newSingleThreadExecutor,只有单个线程的线程池。
2.newFixedThreadExecutor(n),固定数量的线程池。
3.newCacheThreadExecutor,线程池大小无上限,可缓存线程池,会自动回收空闲线程,等待队列可以使用synchronousQueue。
4.newScheduleThreadExecutor,支持定时和周期执行任务的线程池。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容