首先,java线程池的一个很是重要的类,就是ThreadPoolExecutor类java
新建一个线程池,代码为数组
ThreadPoolExecutor executor = new ThreadPoolExecutor(...);函数
构造函数的参数说一下spa
最关键的参数就是这么几个,最基本的任务分配策略也是基于这几个参数。下面是任务分配策略线程
一、线程池初始默认线程数为0,当有任务来临时,建立新线程执行任务队列
二、当来的任务数大于线程池规定线程数(corePoolSize )时,剩下多余的任务到 阻塞任务队列(bockingqueue )中等待it
三、当阻塞任务队列也满了的时候,也就是排队也没地儿排队了的时候,线程池会新建线程来执行任务线程池
四、当线程池的线程数达到最大线程数(maximumPoolSize )时,再来任务也接不了了,会按照拒绝任务策略来处理剩下的事情。构造函数
keepAliveTimes 这个参数:当线程池中的线程数大于规定线程数(corePoolSize )时,并且又没啥任务,这个时候,多余的线程在 keepAliveTimes 时间后就会消亡,线程池线程数量小于 规定线程数(corePoolSize )queue
最后再说线程池的两个方法,shutdown() 和 shutdownNow()
shutdown():执行这个方法后,线程池再也不接受新的任务,当执行完手里的任务(包括阻塞队列里的任务)后,线程池关闭【这个就至关于要离职了,也要处理好手里的事情】
shutdownNow():执行这个方法后,线程池再也不接受新的任务,而且会尝试中断手里的任务,而后线程池关闭【这个就是要离职的时候,立刻什么都不干了,拍屁股走人】
若是您以为这篇文章帮到您,请您顺手点个赞,若是有什么错误之处,也请您必定不吝赐教,咱们共同进步!