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:谁把任务给我,谁来执行


     
     
     
  • 相关阅读:
    UVA 439 Knight Moves
    UVA 673 Parentheses Balance
    UVa 536 Tree Recovery
    UVA 712 S-Trees
    UVA 12657 Boxes in a Line
    UVA 679 Dropping Balls
    UVA 1603 Square Destroyer
    UVA 1343 The Rotation Game
    UVA 1374 Power Calculus
    UVA 12558 Egyptian Fractions (HARD version)
  • 原文地址:https://www.cnblogs.com/zhouchangyang/p/10627408.html
Copyright © 2011-2022 走看看