For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
线程池的学习与应用是每一位Java编程开发程序员都应该熟练掌握的一个编程知识,而本文我们就通过案例分析来简单了解一下,线程池学习需要掌握哪些知识点。
创建一个线程池需要七个参数。
corePoolSize:线程池核心线程数量大小,有新任务进来时,如果线程池中的线程数小于这个值,则会创建新的线程来执行任务(不管有没有空闲线程,都会创建),直到线程数量大于等于这个数量。
maximumPoolSize:线程池大线程数量大小(当达到核心线程数,且队列任务已满,会增加线程至大线程数)。
keepAliveTime:线程的大空余时间,大于这个时间将被回收(线程数大于核心线程数时,多余的线程空闲时长达到这个值就会被回收)。
unit:空余时长的单位。
workQueue:阻塞队列,当核心线程数已满,任务会被放到这个队列中。
threadFactory:线程工厂,线程池中的线程都是由这个线程工厂创建的,线程池提供了默认的线程工厂。
handler:拒绝策略,当队列任务已满,且线程数量达到大线程数,新进入的任务会执行这个拒绝策略来选择丢弃哪个任务,线程池提供了四种默认的拒绝策略。
线程工厂ThreadFactor,线程池中默认给定了一个线程工厂DefaultThreadFactory,线程工厂的作用是用于创建线程,自己创建线程工厂时需要实现ThreadFactor接口,该接口中只有一个方法ThreadnewThread(Runnabler);,即创建线程的方法,自定义线程工厂的好处是可以自定义线程名称。
阻塞队列BlockingQueue,阻塞队列是在核心线程满了以后存放任务使用,常用的有LinkedBlockingQueue、ArrayBlockingQueue、SynchronousQueue、DelayedWorkQueue等,当阻塞队列也满时,会创建线程至大线程数,如果队列已满,也达到大线程数,则执行拒绝策略。
拒绝策略RejectedExecutionHandler:
DiscardPolicy:丢弃该任务,不抛异常。
DiscardOldestPolicy:丢弃早加入队列的任务,不抛异常。
AbortPolicy:丢弃该任务并抛出异常RejectedExecutionException,默认使用该策略。
CallerRunsPolicy:由调用线程池的线程来执行当前任务。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。