线程池学习需要掌握哪些知识点
匿名提问者2023-04-04
想要参加线程池学习需要掌握哪些知识点
推荐答案
同学,您好!线程池学习需要掌握哪些知识点是每一个Java编程开发程序员都应该精通的编程知识,本文将通过案例分析的方式来简单了解线程池学习需要掌握哪些知识点。
创建线程池需要七个参数。
corePoolSize:线程池中的核心线程数。 当有新的任务进来时,如果线程池中的线程数小于这个值,就会创建一个新的线程来执行任务(不管有没有空闲线程),直到线程数大于等于这个数额。
maximumPoolSize:线程池的最大线程数(当达到核心线程数且队列任务已满时,会增加线程数到最大线程数)。
keepAliveTime:线程最大空闲时间,大于此时间将被回收(当线程数大于核心线程数时,冗余线程的空闲时间达到此值时将被回收).
unit:空闲时间的单位。
workQueue:阻塞队列。 当核心线程数满了,任务就会放到这个队列中。
threadFactory:线程工厂,线程池中的线程都是由这个线程工厂创建的,线程池提供了一个默认的线程工厂。
处理程序:拒绝策略。当队列任务满,线程数达到最大线程数时,新进入的任务会执行这个拒绝策略,选择丢弃哪个任务。线程池提供了四种默认的拒绝策略。
线程工厂ThreadFactor,线程池中默认给定了一个线程工厂DefaultThreadFactory。 线程工厂的作用是创建线程。 自己创建线程工厂时,需要实现ThreadFactor接口。 只有一种方法 ThreadnewThread(Runnabler); 在这个接口中,也就是create Thread方法,自定义线程工厂的好处是可以自定义线程名称。
阻塞队列BlockingQueue,阻塞队列用于存储核心线程满后的任务。 常用的有LinkedBlockingQueue、ArrayBlockingQueue、SynchronousQueue、DelayedWorkQueue等,当阻塞队列也满了时,会创建线程,直到最大线程数。 当达到最大线程数时,执行拒绝策略。
拒绝策略 RejectedExecutionHandler:
DiscardPolicy:丢弃任务而不抛出异常。
DiscardOldestPolicy:丢弃提前加入队列的任务而不抛出异常。
AbortPolicy:任务被丢弃,抛出异常RejectedExecutionException。 默认情况下使用此策略。
CallerRunsPolicy:当前任务由调用线程池的线程执行。