zoukankan      html  css  js  c++  java
  • Java_多线程2_线程池

    线程池(pool):

    线程池的作用:

    1、节省资源,减少线程的数量和创建销毁线程的开销
    2、合理的管理线程的分配

    线程池的创建:
    1、newCachedThreadPool   //优点:很灵活,弹性的线程管理,需要多少线程就给多大的线程池
                            缺点:如果线程无限增长,会导致内存溢出
    2、newFixedThreadPool    //优点:创建一个固定大小的线程池,超出的任务会在队列中等待
                                       缺点:难以扩展,不支持自定义 拒绝策略
    3、newScheduledThreadPool  //优点:支持周期性的执行任务,固定大小
                                缺点: 单线程执行,一旦一个任务失败会影响其他任务执行
    4、newSingleThreadExecutor  //优点:能够顺序执行任务
                                 缺点:不明白怎么设计的,可以使用队列来执行
    5、ThreadPoolExecutor    //优点:上面所有的优点
    使用newFixedThreadPool创建一个固定大小的线程池:
    ExecutorService fixPool =Executors.newFixedThreadPool(5);

    for (int i=0;i<20;i++) {
    fixPool.execute(new MyRunnable()); //execute:执行一个任务
    {
    @Override
    public void run() {
    System.out.println(Thread.currentThread().getName());
    }
    });
    }
    fixPool.shutdown(); //中断线程池,没有任务执行时要中断线程池

    使用
    ThreadPoolExecutor创建一个的核心池:
    ThreadPoolExecutor pool = new ThreadPoolExecutor(3, 5, 5, TimeUnit.SECONDS,new LinkedBlockingDeque<Runnable>(20),new ThreadPoolExecutor.AbortPolicy());
    pool.execute(new MyRunnable()); //将一个实现线程接口的任务类交给核心池
    核心池类的参数:
    corePoolSize(3):核心池的大小
    maximumPoolSize(5):池内线程的最大值
    keepAliveTime(5):线程的存活时间
    Unit(TimeUnit.SECONDS): 上述时间的单位
    BlockingQueue(new LinkedBlockingDeque<Runnable>(20)):队列,如果有任务需要等待线程执行,就会临时存储在这个队列中,(20:队列容量)
    RejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy()):拒绝策略
    拒绝策略:
    1、Abortpolicy:丢弃任务并抛出异常
    2、Discardpolicy:丢弃任务,但不抛出异常
    3、Discardoldestpollicy:丢弃队列最前面的任务,尝试重新
    4、CallerRunsPolicy:谁把任务给我,谁来执行


     
     
     
  • 相关阅读:
    数据库学习笔记5---MySQL字符串函数、日期时间函数
    关于hibernate的AnnotationConfiguration的问题
    浅谈Java web 中request的setAttribute()用法
    JAVA常见面试题之Forward和Redirect的区别
    JSP页面中<%!%>与<%%>与<%=%>
    Servlet的生命周期
    JavaEE学习路线图
    java web项目WEB-INF与META-INF的作用
    iOS-申请邓白氏编码的超详细流程介绍
    从高版本JDK换成低版本JDK报错
  • 原文地址:https://www.cnblogs.com/zhouchangyang/p/10627408.html
Copyright © 2011-2022 走看看