Maximumpoolsize:大线程数。
成都创新互联专业提供成都主机托管四川主机托管成都服务器托管四川服务器托管,支持按月付款!我们的承诺:贵族品质、平民价格,机房位于中国电信/网通/移动机房,南充服务器托管服务有保障!Keepalivetime:空闲线程的保留时间。
Timeunit:空闲线程保留时间的单位。
阻塞队列<runnable>:阻塞队列以存储等待执行的任务。
Threadfactory:用于创建线程的线程工厂。
Rejectedexecutionhandler:队列已满且任务量大于大线程数时的异常处理策略。
如何优雅的使用和理解线程池?你怎么看?要理解和使用好java线程池,需要掌握并发编程的基本知识,认真阅读和学习线程池API的所有官方文档。合理使用线程池的要点总结如下:1。例如,您希望将同步API更改为异步,还是希望同时请求多个外部服务,或者减少线程的创建和销毁以处理用户请求。
2.根据您的实际项目需求,配置线程池的参数,包括corepoolsize、maximumpoolsize、blockingqueue、keepalivetime、threadfactory和saturationpolicy(或rejectedexecutionhandler)。
3.根据应用程序的特点部署线程池。一些后台服务应用程序适合在启动时创建线程池,并且在应用程序执行期间不修改线程池。有时,应用程序适合临时创建线程池,将任务提交给它,并在使用后立即销毁它。
4.当您决定不再使用线程池时,应该调用shutdown()来正常关闭线程池。Shutdown可以保证以前提交到线程池的任务不会被丢弃,保证了数据的安全性。
5.调用shutdown后,线程池此时可能正在执行任务,但提交任务的条目被关闭。如果需要等待线程池完全终止,则需要调用waitterminate以等待线程池处理队列中的所有任务并清理它们,然后返回。Awaitterminate成功返回,线程池被彻底清理。
总之,线程池按创建(构造方法)、提交任务(执行)、关闭和等待清理结束(等待终止)的顺序调用API。只有这样,我们才能优雅地使用线程池。为了更好地利用java线程池并大限度地提高优化程序的性能,您可以参考我官方帐户中的分析文章。
线程池处理流程是什么?任务提交后,线程池首先确定线程数是否达到核心池大小。如果未达到线程数,则创建一个核心线程来处理任务;否则,执行下一步;
然后线程池判断任务队列是否已满。如果没有,则将任务添加到任务队列;否则,执行下一步;
然后,由于任务队列已满,线程池将判断线程数是否达到大值。否则,将创建一个非核心线程来处理该任务;否则,将执行饱和策略,并在默认情况下引发rejectedexecutionexception异常。