自定义线程池的执行流程如下:

  1. 创建一个线程池,包含固定数量的线程。
  2. 将任务提交到线程池中。
  3. 线程池会维护一个任务队列,将任务存放在队列中。
  4. 当线程池中的线程空闲时,会从任务队列中取出一个任务执行。
  5. 如果线程池中的线程都在执行任务,新的任务会被放入任务队列中等待执行。
  6. 当线程池中的线程执行完任务后,会再次从任务队列中取出任务执行。
  7. 当线程池中的线程不再需要执行任务时,线程会被销毁。

线程池的参数设置参考如下:

  1. 核心线程数(corePoolSize):线程池中保持的最小线程数量。当有新的任务提交时,线程池会创建新的线程来执行任务,直到达到核心线程数。
  2. 最大线程数(maximumPoolSize):线程池中允许的最大线程数量。当任务队列已满且线程池中的线程数小于最大线程数时,线程池会创建新的线程来执行任务。
  3. 任务队列(workQueue):线程池中用于存放任务的队列。当线程池中的线程都在执行任务时,新的任务会被放入任务队列中等待执行。
  4. 线程存活时间(keepAliveTime):当线程池中的线程数量超过核心线程数时,多余的空闲线程的存活时间。如果线程在空闲时间内没有任务可执行,则线程会被销毁。
  5. 线程工厂(threadFactory):用于创建线程的工厂类。可以自定义线程的名称、优先级等属性。
  6. 拒绝策略(rejectedExecutionHandler):当线程池和任务队列都已满时,新的任务无法被执行时的处理策略。可以选择抛出异常、丢弃任务、丢弃队列中最旧的任务或者在主线程中执行任务。

这些参数的设置参考主要根据系统的资源情况和任务的特点来确定。例如,当系统资源有限时,可以将核心线程数设置为较小的值,以避免创建过多的线程导致资源耗尽。当任务量较大且任务执行时间较长时,可以将任务队列设置为无界队列,以避免任务被拒绝执行。当系统资源较多且任务量较小且任务执行时间较短时,可以将核心线程数和最大线程数设置相等,以避免创建过多的线程

7自定义线程池的执行流程 线程池的这些参数是根据什么参考来设置的

原文地址: https://www.cveoy.top/t/topic/h2JE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录