Java多线程(二)

  1. 线程池构造器参数的含义

    • coreSize:核心线程数
    • maxSize:最大线程数
    • KeepAliveTime:线程空闲的最大时间
    • Queue:等待队列
    • ThreadFactory
    • RejectExecutionHandler:拒绝策略
      • AbortPolicy:直接抛出异常<默认策略>
      • CallerRunsPolicy:用调用者所在的线程来执行任务
      • DiscardOldestPolicy:丢弃队列中最靠前的任务并执行当前任务
      • DiscardPolicy:直接丢弃任务

    当请求不断增加时,各个参数起的作用如下:

    1. 请求数< coreSize:创建新的线程来处理任务

    2. coreSize<=请求数&&能够成功入队列:任务进入到队列中等待消费

    3. 队列已满&&请求数<maxSize:创建非核心线程来处理任务

    4. 队列已满&&请求数>=maxSize:使用RejectExecutionHandler类拒绝请求。

      线程池的处理流程

  2. 利用Executors创建不同的线程池来满足不同场景的需求?

    • newFixedThreadPool(int nThread)指定工作线程数量的线程池
    • newCachedThreadPool():处理大量段时间工作任务的线程池
    • newSingleThreadExecutor():创建唯一的工作者线程来执行任务。
    • newSingleThreadScheduledExecutor:定时或者周期性的工作调度
    • newWorkStrealingPool():内部会构造ForkJoinPool,利用work-Strealing算法,并行地处理任务,不保证处理顺序。
原文地址:https://www.cnblogs.com/shine-rainbow/p/12452277.html