7自定义线程池的执行流程 线程池的这些参数是根据什么参考来设置的
自定义线程池的执行流程如下:
- 创建一个线程池,包含固定数量的线程。
- 将任务提交到线程池中。
- 线程池会维护一个任务队列,将任务存放在队列中。
- 当线程池中的线程空闲时,会从任务队列中取出一个任务执行。
- 如果线程池中的线程都在执行任务,新的任务会被放入任务队列中等待执行。
- 当线程池中的线程执行完任务后,会再次从任务队列中取出任务执行。
- 当线程池中的线程不再需要执行任务时,线程会被销毁。
线程池的参数设置参考如下:
- 核心线程数(corePoolSize):线程池中保持的最小线程数量。当有新的任务提交时,线程池会创建新的线程来执行任务,直到达到核心线程数。
- 最大线程数(maximumPoolSize):线程池中允许的最大线程数量。当任务队列已满且线程池中的线程数小于最大线程数时,线程池会创建新的线程来执行任务。
- 任务队列(workQueue):线程池中用于存放任务的队列。当线程池中的线程都在执行任务时,新的任务会被放入任务队列中等待执行。
- 线程存活时间(keepAliveTime):当线程池中的线程数量超过核心线程数时,多余的空闲线程的存活时间。如果线程在空闲时间内没有任务可执行,则线程会被销毁。
- 线程工厂(threadFactory):用于创建线程的工厂类。可以自定义线程的名称、优先级等属性。
- 拒绝策略(rejectedExecutionHandler):当线程池和任务队列都已满时,新的任务无法被执行时的处理策略。可以选择抛出异常、丢弃任务、丢弃队列中最旧的任务或者在主线程中执行任务。
这些参数的设置参考主要根据系统的资源情况和任务的特点来确定。例如,当系统资源有限时,可以将核心线程数设置为较小的值,以避免创建过多的线程导致资源耗尽。当任务量较大且任务执行时间较长时,可以将任务队列设置为无界队列,以避免任务被拒绝执行。当系统资源较多且任务量较小且任务执行时间较短时,可以将核心线程数和最大线程数设置相等,以避免创建过多的线程
原文地址: https://www.cveoy.top/t/topic/h2JE 著作权归作者所有。请勿转载和采集!