zoukankan      html  css  js  c++  java
  • 面试之线程池

    1。构造方法

    public ThreadPoolExecutor(int corePoolSize,  
                                  int maximumPoolSize,  
                                  long keepAliveTime,  
                                  TimeUnit unit,  
                                  BlockingQueue<Runnable> workQueue,  
                                  ThreadFactory threadFactory,  
                                  RejectedExecutionHandler handler)

    2.图示:主要对象任务队列(fifo先进先出),核心线程数,非核心线程数,最大线程数,空闲时间

    3.线程池流程

     4.饱和策略

    handler:饱和策略,大家都很忙,咋办呢,有四种策略
    CallerRunsPolicy:只要线程池没关闭,就直接用调用者所在线程来运行任务
    AbortPolicy:直接抛出 RejectedExecutionException 异常
    DiscardPolicy:悄悄把任务放生,不做了
    DiscardOldestPolicy:把队列里待最久的那个任务扔了,然后再调用 execute() 试试看能行不

    5.执行提交方式

    ExecutorService 提供了两种提交任务的方法:

    1. execute():提交不需要返回值的任务
    2. submit():提交需要返回值的任务

    6.线程池类型

    JDK 为我们内置了五种常见线程池的实现,均可以使用 Executors 工厂类创建,其实底部都是使用

    ThreadPoolExecutor这个构造函数的不通的参数模式,
    其中比较特殊的是:

    newScheduledThreadPool,周期性的线程任务

    • scheduleAtFixedRate() :按某种速率周期执行
    • scheduleWithFixedDelay():在某个延迟后执行
  • 相关阅读:
    hdu-2544-最短路(Bellman-Ford算法模板)
    hdu-2544-最短路(dijkstra算法模板)
    C++结构体成员列表初始化
    hdu-3790-最短路径问题(Dijkstra)
    hdu--1878--欧拉回路(并查集判断连通,欧拉回路模板题)
    nyoj-1278-Prototypes analyze(二叉排序树模板)
    hdu-5183-Negative and Positive (NP)(hash模板)
    nyoj-130-相同的雪花(hash)
    01 格式化输出
    003 标准数据类型简介 + 数字类型
  • 原文地址:https://www.cnblogs.com/longsanshi/p/14452675.html
Copyright © 2011-2022 走看看